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 2int 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 2int a[17][2]=,b[9]=;
3void f(int i,intx)4
14}15}
16int
main()
1726
return0;
27 }
非遞迴遍歷:
1 #include2 #include3 #include4using
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 #include3int 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...