codevs 3143 二叉樹的序遍歷

2021-09-21 15:40:43 字數 2715 閱讀 2761

codevs 3143 二叉樹的序遍歷

題目描述 description

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

輸入描述 input description

第一行乙個整數n,表示這棵樹的節點個數。

接下來n行每行2個整數l和r。第i行的兩個整數li和ri代表編號為i的節點的左兒子編號和右兒子編號。

輸出描述 output description

輸出一共三行,分別為前序遍歷,中序遍歷和後序遍歷。編號之間用空格隔開。

樣例輸入 sample input

2 34 50 0

0 00 0

樣例輸出 sample output

1 2 4 5 3

4 2 5 1 3

4 5 2 3 1

資料範圍及提示 data size & hint

n <= 16

1 #include 2

int n,a[100][2]=;//

節點數n,順序儲存的二叉樹

3void preorder(int b) /*

先序遍歷的遞迴演算法*/4

9void inorder(int b) /*中

序遍歷的遞迴演算法

*/10

17void postorder(int b) /*

後序遍歷的遞迴演算法

*/18

23int

main()

2435 preorder(1

);36 printf("\n"

);37

38 inorder(1

);39 printf("\n"

);40

41 postorder(1

);42 printf("\n"

);43

44return0;

45 }

何泓歷的**:

1 #include 2

int a[17][2]=,b[9]=;

3void f(int i,intx)4

14}15}

16int

main()

1726

return0;

27 }

非遞迴遍歷:

1 #include2 #include3 #include4

using

namespace

std;56

int n,a[100][2]=;//

節點數n,順序儲存的二叉樹78

void preorder(int b) /*

先序遍歷的非遞迴演算法*/9

21if (a[p][0]!=0)//

左孩子結點入棧

2225}26

}2728void inorder(int b) /*

中序遍歷的非遞迴演算法

*/29

40if(!st.empty())

4146}47

}4849void postorder(int b) /*

後序遍歷的非遞迴演算法

*/50

61 p=0; //

p指向棧頂結點的前乙個已訪問的結點

62 flag=1; //

設定b的訪問標記為已訪問過

63while(!st.empty() && flag==1)64

71else

72 76}

77 }while(!st.empty());78}

7980

int main(int argc, char *ar**)

8192 preorder(1

);93 printf("\n"

);94

95 inorder(1

);96 printf("\n"

);97

98 postorder(1

);99 printf("

\n");/**/

100return0;

101 }

何泓歷的**:

1 #include 2 #include 

3int n,i,j,b[9]=;//

先序,中序,後序

4int zhan[101],top,flag,a[3][17]=;//

a0i左孩子,a1i右孩子,a2i表示是否訪問過

5int f(int x)//

b[x]~b[x+2]表示訪問的順序

6break;11

case

1:if(!a[2][a[0][zhan[top]]]&&a[0][zhan[top]])//

訪問左孩子

12 break;13

case

2:if(!a[2][a[1][zhan[top]]]&&a[1][zhan[top]])//

訪問右孩子

14 break;15

}16return

flag;17}

18int

main()

1932 printf("\n"

);33}34

return0;

35 }

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

3143 codevs 二叉樹的序遍歷

題目描述 description 求一棵二叉樹的前序遍歷,中序遍歷和後序遍歷 輸入描述 input description 第一行乙個整數n,表示這棵樹的節點個數。接下來n行每行2個整數l和r。第i行的兩個整數li和ri代表編號為i的節點的左兒子編號和右兒子編號。輸出描述 output descri...