已知一棵二叉樹的前序遍歷和中序遍歷,求二叉樹的後序遍歷。
輸入資料有多組,第一行是乙個整數t (t<1000),代表有t組測試資料。每組包括兩個長度小於50 的字串,第乙個字串表示二叉樹的先序遍歷序列,第二個字串表示二叉樹的中序遍歷序列。
每組第一行輸出二叉樹的後序遍歷序列,第二行輸出二叉樹的層次遍歷序列
2abdegcf
dbgeafc
xnliu
lnixu
dgebfcamemory:272 kbabcdefg
linux
xnuli
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中是從右往左...