두 갈래 나무 만들기 (순서)
2375 단어 나무.
두 갈래 나무를 세우다
두 갈래 트리를 구축하면 입력한 줄의 선순, 중순 또는 후순에 따라 구축할 수 있다. 예를 들어 본 편에서 124-1-13-135-1-1을 예로 들면 숫자-1은 공결점으로 선순, 중순, 후순은 큰 차이가 없다. 단지 결점 데이터에 값을 부여하는 시간이 다르기 때문에 귀속 사상을 구축하고 운용한다.반복은 선, 중, 후순이 될 수도 있고, 층층이 반복할 수도 있다.층차적으로 대열을 운용하여 팝마다 하나의 데이터를 출력하고push는 상응하는 좌우 아이에게 들어간다.이 편에서 나의 대기열에 사용되는 stl 템플릿은 대기열에 모든 결점 지침을 저장하는데 개인적으로 이렇게 하면 더욱 간단하고 이해하기 쉽다고 생각한다.
끝점 생성하기
#include
#include
#include
#include
using namespace std;//1 2 4 -1 -1 -1 3 5 -1 -1 -1
int cout=0;
typedef struct node{
int data;
struct node *leftchild;
struct node *rightchild;
}Tree,*Btree;
먼저 두 갈래 나무를 세우다
int createtree(node* &root)// , -1
{
int x;
scanf("%d",&x);
if(x==-1){
root=NULL;
}
else{
root=(node*)malloc(sizeof(node));
root->data=x;cout++;
createtree(root->leftchild);
createtree(root->rightchild);//cout++;
}
return cout;// cout
}
반복:
void firstfind(node* &root)//
{
if(root)
{
printf("%4d",root->data);
firstfind(root->leftchild);
firstfind(root->rightchild);
}
}
void middlefind(node* &root)//
{
if(root)
{
middlefind(root->leftchild);printf("%4d",root->data);
middlefind(root->rightchild);
}
}
void lastfind(node* &root)//
{
if(root)
{
lastfind(root->leftchild);
lastfind(root->rightchild); printf("%4d",root->data);
}
}
void everyfind(node* &root)// (stl , , , )
{
queueq;
q.push(root);
while(!q.empty())
{
printf("%4d",q.front()->data);
if(q.front()->leftchild)q.push(q.front()->leftchild);
if(q.front()->rightchild)q.push(q.front()->rightchild);
q.pop();//pop
}
}
주 함수:
int main()
{
Btree root;
createtree(root);
printf(" :
");
firstfind(root);
printf("
");
printf(" :
");
middlefind(root);
printf("
");
printf(" :
");
lastfind(root);
printf("
");
printf(" :
");
everyfind(root);
printf("
");
printf(" %d
",cout);
return 0;
}
주의: 매번 전송된 루트는 주소를 찾아야 합니다 & *가 아니라 주소를 전송하면 바늘에 상응하는 데이터를 직접 바꿀 수 있습니다. 이 작은 문제로 인해 불필요한 시간을 많이 들여서 검사했습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
예제 1.15 UVALive-3902 트리의 검색컨베이어 도어 제목 대의: n대의 기계는 하나의 트리 네트워크로 연결되어 잎 노드는 클라이언트이고 다른 노드는 서버이다. 처음에는 한 대의 서버만 하나의 서비스를 제공했지만 k의 거리 내의 클라이언트만 덮어쓸 수 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.