利用二叉樹中序及後序遍歷確定該二叉樹的先序序列

2021-08-20 05:37:59 字數 983 閱讀 3458

已知二叉樹的中序和先序遍歷可以唯一確定後序遍歷、已知中序和後序遍歷可以唯一確定先序遍歷,但已知先序和後序,卻不一定能唯一確定中序遍歷。現要求根據輸入的中序遍歷結果及後序遍歷結果,要求輸出其先序遍歷結果。

輸入

第一行為中序序列 第二行為後續序列
輸出
輸出為遍歷二叉樹得到的先序序列

樣例輸入

bfdaegc
fdbgeca
樣例輸出
abdfceg

已知一棵二叉樹的後序序列和中序序列,構造該二叉樹的過程如下:

1. 根據後序序列的最後乙個元素建立根結點;

2. 在中序序列中找到該元素,確定根結點的左右子樹的中序序列;

3. 在後序序列中確定左右子樹的後序序列;

4. 由左子樹的後序序列和中序序列建立左子樹;

5. 由右子樹的後序序列和中序序列建立右子樹。

#include

#include

#include

#include

usingnamespace

std;

structbtree

;btree

* build(

char

*fina,

char

*mid,

long

n)//後序,中序,二叉樹節點個數

k = p - mid;//剩餘結點個數

b->left = build(fina, mid, k);

b->right = build(fina+k,p + 1, n - 1 - k);

return

b;//返回根節點

}void printf(btree *root)//先序遍歷

cout

<< root->st;

printf(root->left);

printf(root->right);

}int main()

利用二叉樹中序及後序遍歷確定該二叉樹的先序序列

已知二叉樹的中序和先序遍歷可以唯一確定後序遍歷 已知中序和後序遍歷可以唯一確定先序遍歷,但已知先序和後序,卻不一定能唯一確定中序遍歷。現要求根據輸入的中序遍歷結果及後序遍歷結果,要求輸出其先序遍歷結果。輸入第一行為中序序列 第二行為後續序列輸出輸出為遍歷二叉樹得到的先序序列 樣例輸入bfdaegc ...

利用二叉樹中序及後序遍歷確定該二叉樹的先序序列

利用二叉樹中序及後序遍歷確定該二叉樹的先序序列 1000 ms 10000 kb 3046 6121 已知二叉樹的中序和先序遍歷可以唯一確定後序遍歷 已知中序和後序遍歷可以唯一確定先序遍歷,但已知先序和後序,卻不一定能唯一確定中序遍歷。現要求根據輸入的中序遍歷結果及後序遍歷結果,要求輸出其先序遍歷結...

利用二叉樹中序及先序遍歷確定該二叉樹的後序序列

已知二叉樹的中序和先序遍歷可以唯一確定後序遍歷 已知中序和後序遍歷可以唯一確定先序遍歷,但已知先序和後序,卻不一定能唯一確定中序遍歷。現要求根據輸入的中序遍歷結果及先序遍歷結果,要求輸出其後序遍歷結果。輸入輸入資料佔2行,其中第一行表示中序遍歷結果,第二行為先序遍歷結果。輸出對測試資料,輸出後序遍歷...