給定乙個樹的先序和中序的遍歷結果,構建一棵樹,並輸出這個棵樹的層序遍歷和後序遍歷結果。注:這棵樹的結點是由整數描述
樹結點總數m
先序輸出序列
中序輸出序列
層序輸出序列
後續輸出序列
101 2 5 10 3 6 13 7 14 15
2 10 5 1 6 13 3 14 7 15
1 2 3 5 6 7 10 13 14 15
10 5 2 13 6 14 15 7 3 1
顯而易見,我們可以知道,已知中序序列和任意乙個前後序序列可以重新構建二叉樹。自己畫圖好好想想就懂,想不明白看書本207頁。
//應黃某某要求加入注釋思路
#include
#include
using namespace std;
struct bintreenode};
//這裡是難點,用給定的前序遍歷和中序遍歷序列,構造樹
//詳細講解見課本p208頁,懂得都懂
bintreenode *
creattree
(int
*vlr,
int*lvr,
int n)
//層序遍歷演算法,懂得都懂
//用了佇列,very簡單
void
layerorder
(bintreenode *t)
}//後序遍歷演算法,懂得都懂
//用遞迴,very簡單
void
postorder
(bintreenode *t)
}int
main()
for(
int i =
0; i) bintreenode * root;
root=
creattree
(vlr,lvr,n)
;layerorder
(root)
; cout
(root)
;}
先序構建二叉樹及先序遍歷二叉樹
先序為dlr d 根節點,l 左子樹,r 右子樹 a b c d e 先序序列為abdce,輸入為abd c e 表示空格,代表空樹 輸入按滿二叉樹輸入 每乙個節點都是乙個子樹的根節點 void pre create tree treenode t else else void pre visit ...
先序構建二叉樹及先序遍歷二叉樹
先序為dlr d 根節點,l 左子樹,r 右子樹 a b c d e 先序序列為abdce,輸入為abd c e 表示空格,代表空樹 輸入按滿二叉樹輸入 每乙個節點都是乙個子樹的根節點 void pre create tree treenode t else else void pre visit ...
先序構建二叉樹 preorder
先序構建二叉樹 preorder 題目描述 樹的括號表示法 先將根結點放入一對圓括號中,然後把它的子樹按由左而右的順序放入括號中,而對子樹也採用同樣方法處理 同層子樹與它的根結點用一對圓括號括起來。例如下圖可寫成如下形式 輸入描述 輸入只有乙個字串,用括號表示法表示的一顆二叉樹。輸出描述 輸出以後一...