二叉樹後序遍歷和層次遍歷

2021-06-23 10:04:02 字數 1590 閱讀 5686



已知一棵二叉樹的前序遍歷和中序遍歷,求二叉樹的後序遍歷。

輸入資料有多組,第一行是乙個整數t (t<1000),代表有t組測試資料。每組包括兩個長度小於50 的字串,第乙個字串表示二叉樹的先序遍歷序列,第二個字串表示二叉樹的中序遍歷序列。

每組第一行輸出二叉樹的後序遍歷序列,第二行輸出二叉樹的層次遍歷序列

2

abdegcf

dbgeafc

xnliu

lnixu

dgebfca

abcdefg

linux

xnuli

memory:272 kb

time:0 ms

language:g++

result:accept

#include

#include

char a[

1000

],b[

1000

];struct

node

;struct

node

*build

(char

*a,char

*b,int n)

char x = a[

0];///找到根節點

struct

node

*t; t =

(struct

node

*)malloc

(sizeof

(struct

node

)); t->data = x;

int i;

for(i=

0;it->l =

build

(a+1

,b,i);///右子樹+1

t->r =

build

(a+i+1

,b+i+1

,n-i-1

);return t;

}void

last

(struct

node

*t)///後序遍歷

}void

add(

struct

node

*t)///層次遍歷

else

out++;}}

struct node *p;  

int head,wei;//定義隊頭,隊尾指標  

wei ++;  

while(head != wei )//佇列不為空時  

head = (head+1)%n;  

printf("%c",p->data);//訪問結點        if(p->left != null)  

wei = (wei + 1) % n; //有左孩子時將其進隊  

}        if(p->right!=null)  

wei=(wei + 1)%n;//有右孩子時將其進隊  

}  int

main()

二叉樹先序遍歷,中序遍歷,後序遍歷,層次遍歷。

原理 如圖 先序遍歷結果為 abdhecfg 首先從根節點開始,然後左節點,左節點成為根節點,然後再左節點,然後右節點 如果左子樹遍歷完後就遍歷該根節點的右子樹 中序遍歷結果為 hdbeafcg 當左節點被讀取後,左節點被當作根節點 後序遍歷結果為 hdebfgca 注意每個節點的左右子樹必須遍歷完...

層次遍歷二叉樹

問題 假定根節點位於第0層 1.層次遍歷二叉樹 每層換行分開 2.層次遍歷二叉樹指定的某層 本文 例如 上圖中1.123 4567 82.第三層 78可以看出得出第二問的解,第一問迎刃而解了,所以從問題二下手 1.層次遍歷二叉樹指定的某層 可以得出這樣的乙個結論 遍歷二叉樹的第k層,相當於遍歷二叉樹...

二叉樹層次遍歷

題目描述 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。思路 二叉樹的層次遍歷,利用棧的先進後出的特性。struct treenode class solution res.push back temp while m.empty m中是從左往右入棧,這裡把它反過來,s中是從右往左...