在這解道問題前先學習一下什麼是二叉樹的序遍歷。
二叉樹的序遍歷分為前序遍歷,中序遍歷和後序遍歷。
前序遍歷:
前序遍歷(dlr)是二叉樹遍歷的一種,也叫做先根遍歷、先序遍歷、前序周遊,可記做根左右,即其遍歷先從根節點開始,再依次遍歷左右子節點。
中序遍歷:
中序遍歷(ldr)是二叉樹遍歷的一種,也叫做中根遍歷、中序周遊,可記做左根右,即其遍歷從左子節點開始,再依次遍歷根節點和右子節點。
後序遍歷:
後序遍歷(lrd)是二叉樹遍歷的一種,也叫做後根遍歷、後序周遊,可記做左右根,即其遍歷從左子節點開始,再依次遍歷右子節點和根節點。
上圖的前序遍歷結果為:
abdecf
中序遍歷結果為:
dbeafc
後序遍歷結果為:
debfca
題目描述 description根據不同的遍歷方法設計三種遞迴求一棵二叉樹的前序遍歷,中序遍歷和後序遍歷
輸入描述 input description
第一行乙個整數n,表示這棵樹的節點個數。
接下來n行每行2個整數l和r。第i行的兩個整數li和ri代表編號為i的節點的左兒子編號和右兒子編號。
輸出描述 output description
輸出一共三行,分別為前序遍歷,中序遍歷和後序遍歷。編號之間用空格隔開。
樣例輸入 sample input
2 34 5
0 00 0
0 0樣例輸出 sample output
1 2 4 5 3
4 2 5 1 3
4 5 2 3 1
資料範圍及提示 data size & hint
n <= 16
ac**:
1 #include2 #include3using
namespace
std;45
int x[100000],y[100000];6
7void q(int
n)13}14
15void z(int
n)21}22
23void h(int
n)29}30
31int
main()
39 q(1
);40 cout<
41 z(1
);42 cout<
43 h(1
);44 cout<
45return0;
46 }
3143 二叉樹的序遍歷
題目描述 description 求一棵二叉樹的前序遍歷,中序遍歷和後序遍歷 輸入描述 input description 第一行乙個整數n,表示這棵樹的節點個數。接下來n行每行2個整數l和r。第i行的兩個整數li和ri代表編號為i的節點的左兒子編號和右兒子編號。輸出描述 output descri...
CODEVS 3143 二叉樹的序遍歷
題目描述 description 求一棵二叉樹的前序遍歷,中序遍歷和後序遍歷 輸入描述 input description 第一行乙個整數n,表示這棵樹的節點個數。接下來n行每行2個整數l和r。第i行的兩個整數li和ri代表編號為i的節點的左兒子編號和右兒子編號。輸出描述 output descri...
codevs3143二叉樹的序遍歷
題目描述 description 求一棵二叉樹的前序遍歷,中序遍歷和後序遍歷 輸入描述 input description 第一行乙個整數n,表示這棵樹的節點個數。接下來n行每行2個整數l和r。第i行的兩個整數li和ri代表編號為i的節點的左兒子編號和右兒子編號。輸出描述 output descri...