由中序與先序序列重新構建二叉樹,並進行後序層序輸出

2021-10-25 08:26:53 字數 1031 閱讀 3723

給定乙個樹的先序和中序的遍歷結果,構建一棵樹,並輸出這個棵樹的層序遍歷和後序遍歷結果。注:這棵樹的結點是由整數描述

樹結點總數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 題目描述 樹的括號表示法 先將根結點放入一對圓括號中,然後把它的子樹按由左而右的順序放入括號中,而對子樹也採用同樣方法處理 同層子樹與它的根結點用一對圓括號括起來。例如下圖可寫成如下形式 輸入描述 輸入只有乙個字串,用括號表示法表示的一顆二叉樹。輸出描述 輸出以後一...