建樹以及遍歷

2021-07-27 21:52:14 字數 1193 閱讀 1181

根據先序中序建樹
#include #include #include #include #define n 50

using namespace std;

int pre[n],in[n],post[n]; //存放先序,中序,後序的陣列

int n;

struct node;

node* create(int prel,int prer,int inl,int inr) //根據先序和中序建立樹

node* root=new node; //建立乙個根結點,用來存放當前的樹

root->data=pre[prel]; // 因為是已知先序,所以當前樹的值,一定等於先序的最左邊的點

int k; //記錄當前根節點在中序的位置

for(k=inl;klchild=create(prel+1,prel+numleft,inl,k-1); //將這部分存入左子樹

root->rchild=create(prel+numleft+1,prer,k+1,inr); // 將這部分存入右子樹

return root; //返回根結點的位址

}int num=0; //控制最後乙個輸出沒有空格

void printfpost(node* root) //後序輸出

;node* create(int postl,int postr,int inl,int inr)

node* root=new node;

root->data=post[postr];

int k;

for(k=inl;klchild=create(postl,postl+numleft-1,inl,k-1);

root->rchild=create(postl+numleft,postr-1,k+1,inr);

return root;

}void bfs(node* root) //層次遍歷輸出

}int main()

{ scanf("%d",&n);

for(int i=0;i

前序遍歷 中序遍歷 建樹和後序遍歷方法

這裡注意首先根據前序遍歷找出根,然後分割二叉樹進行建樹。一定要在紙上畫一畫,用k做為子樹的大小,prel,prer,inl,inr等作為樹的邊界,再加上prel prer的跳出條件,就能完成了。include using namespace std int pre 10 int in 10 type...

先根建樹中序遍歷

description 1 問題描述 給定一棵按 先根 遍歷儲存表示的二叉樹,請中根遍歷這棵二叉樹。2 二叉樹建立說明 按 先根 遍歷儲存表示的二叉樹中,如果在遍歷過程中,發現子樹為空,輸出0 例如 a有b子樹,沒有右子樹,其 先根 遍歷為a b 0 0 0 例如 a為根,b為a的右孩子 c為b的左...

BinaryTree 遞迴遍歷 建樹 C語言

include include include typedef char eleltype 定義結構體 typedef struct btnode,binarytree 申請結點 btnode buynode 釋放結點 void freenode btnode p 遞迴先序遍歷二叉樹 void pr...