後序:左、右、根
中序:左、根、右
前序:根、左、右
前序序列:1,2,3,4,5,6
中序序列:3,2,4,1,6,5
前序序列中的第乙個結點必定是樹的根結點,令這個結點為root,root把這棵樹分為了左右兩棵子樹。i為root所表示的值在中序中的下標,所以i即是分隔中序中對應root結點的左子樹和右子樹的下標。
先列印左子樹,後列印右子樹,最後輸出當前根結點pre[root]的值。
#include
using namespace std;
int pre=
;//前序序列
int in=
;//中序序列
void
post
(int root,
int start,
int ends)
int i=start;
while
(i!=pre[root]
)post
(root+
1,start,i-1)
;//遍歷左子樹
post
(root+
(i-start+1)
,i+1
,ends)
;//遍歷右子樹
cout<<<
' ';
}int
main()
二叉樹 已知前序和中序,求後序
題目描述 若某二叉樹的前遍歷訪問順序是序abdgcefh,中序遍歷順序是dgbaechf,則後序遍歷的訪問順序是什麼。若某二叉樹的前遍歷訪問順序是序abdgcefh,中序遍歷順序是dgbaechf,則後序遍歷的訪問順序是什麼。分析 首先要明確乙個基礎的問題,前序遍歷的順序是 根 左 右 中序遍歷的順...
二叉樹 已知前序 中序或中序 後序構造樹
一 已知二叉樹的中序和後序序列,求二叉樹的前序序列。如 中序 dbgeafc 後序 dgebfca後序的最後一位就是二叉樹的根節點,再根據根節點在中序序列裡的位置,可知道左右子樹,遞迴求解。include include include char pre 1500 用字串儲存前序序列 int k v...
已知二叉樹的前序和中序,求後序
以前在學習資料結構的時候,經常會有一道選擇題,已知二叉樹的前序和中序遍歷,求二叉樹的後序遍歷。後來想到用程式設計的方法來實現它,限於水平有限,一直無從下手。後來,受另乙個問題啟發,才想出其解法 include include include typedef struct btree btree en...