3143 二叉樹的序遍歷

2022-03-27 17:00:51 字數 1440 閱讀 4861

在這解道問題前先學習一下什麼是二叉樹的序遍歷。

二叉樹的序遍歷分為前序遍歷中序遍歷後序遍歷

前序遍歷:

前序遍歷(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 #include3

using

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...