二叉樹的遍歷
(圖1)
(圖2)
二叉樹的遍歷運算(遞歸定義)
(1) 先序遍歷: 根,左子樹,右子樹 根在先
例如圖1:271653894;圖2:ABCKDEHFJG
(2) 中序遍歷: 左子樹,根,右子樹 根在中
例如圖1:175632849;圖2:BKCAHEDHFG
(3) 后序遍歷: 左子樹,右子樹,根 根在后
例如圖1:153674982;圖2:KCBHEJGFDA
題型一:已知其中一些遍歷結果,求其他遍歷結果
題型二:統計n個不同的點可以構造多少棵不同的二叉樹? Catalan數=C(n,2*n)/(n+1)
題型三:中綴表達式向前綴和后綴表達式的轉化
每日練習
注:題1已知先序和中序,二叉樹是唯一的。
題2已知后序和中序,二叉樹是唯一的。
題3已知先序和后序,二叉樹不是唯一的。
1、已知先序:1 2 4 3 5 7 6, 中序:2 4 1 7 5 3 6,請畫出整棵二叉樹。
2、已知后序:4 5 2 6 7 3 1, 中序:4 2 5 7 6 3 1,請畫出整棵二叉樹。
3、已知先序:1 2 3 4 5 6, 后序:3 2 5 6 4 1,請畫所有二叉樹的情況。
4、如果只知道先序abc,畫出所有可能二叉樹形狀,並且計算多少種?
5、如果只知道中序abc,畫出所有可能二叉樹形狀,並且計算多少種?
6、如果只知道后序abc,畫出所有可能二叉樹形狀,並且計算多少種?
往年真題
1. 一顆二叉樹的前序遍歷序列是ABCDEFG,后序遍歷序列是CBFEGDA,則根結點的左子樹的結點個數可能是( )。
A.0 B.2 C.4 D. 6
2. 表達式a*(b+c)-d的后綴表達式是:
A) abcd*+- B) abc+*d- C) abc*+d- D) -+*abcd
3. 二叉樹T,已知其先序遍歷是1 2 4 35 7 6(數字為節點編號,以下同),后序遍歷是4 2 7 56 3 1,則該二叉樹的中根遍歷是( )
A.4 2 1 7 5 3 6 B.2 4 1 7 5 3 6 C.4 2 1 75 6 3 D.2 4 1 57 3 6
4. 二叉樹T,已知其先根遍歷是1 2 4 35 7 6(數字為結點編號,以下同),中根遍歷是2 4 1 57 3 6,則該二叉樹的后根遍歷是( )
A. 4 2 5 7 6 3 1 B. 4 2 7 5 6 3 1 C. 7 4 2 5 6 3 1 D. 4 2 7 6 5 3 1
5. 已知7個節點的二叉樹的先根遍歷是1 2 4 5 6 3 7(數字為結點的編號,以下同), 后根遍歷是4 6 5 2 7 3 1, 則該二叉樹的可能的中根遍歷是( )
A. 4 2 6 5 1 7 3 B. 4 2 5 6 1 3 7 C. 4 2 3 1 5 6 7 D. 4 2 5 6 1 7 3
6. 已知7個節點的二叉樹的先根遍歷是1 2 4 5 6 3 7(數字為節點的編號,以下同),中根遍歷是4 2 6 51 7 3,則該二叉樹的后根遍歷是( )
A.4 6 5 27 3 1 B.4 6 5 2 1 3 7 C.4 2 3 1 5 4 7 D.4 6 5 3 1 7 2
7. 已知6個結點的二叉樹的先根遍歷是1 2 3 4 5 6(數字為結點的編號,以下同),后根遍歷是3 2 5 64 1,則該二叉樹的可能的中根遍歷是( )
A. 3 2 1 46 5 B. 3 21 5 4 6 C. 2 3 1 5 4 6 D. 2 31 4 6 5
二叉樹的性質
性質1:二叉樹第i層上的結點數目最多為。
性質2:深度為k的二叉樹至多有
個結點(k≥1)。
性質3:二叉樹中,葉子節點數為n0,度為2的結點數為n2,則n0=n2+1。
滿二叉樹
定義:一棵深度為k且有
個結點的二又樹稱為滿二叉樹。
特點:每層都飽滿。
完全二叉樹
定義:除了最下層,其他每層都飽滿,最下層的結點都集中在該層最左邊的若干位置上。
特點:
① 滿二叉樹是完全二叉樹,完全二叉樹不一定是滿二叉樹;
② 在滿二叉樹的最下層上,從最右邊開始連續刪去若干結點后得到的二叉樹仍然是一棵完全二叉樹。
③ 在完全二叉樹中,若某個結點沒有左孩子,則它一定沒有右孩子,即該結點必是葉結點。④若I為結點編號則 如果I<>1,則其父結點的編號為I/2;若2*I<=N,則其左兒子(即左子樹的根結點)的編號為2*I;若2*I>N,則無左兒子若2*I+1<=N,則其右兒子的結點編號為2*I+1;若2*I+1>N,則無右兒子。
例題1:畫一個深度為4的滿二叉樹。畫一個深度為4的完全二叉樹。
例題2:具有3個結點的完全二叉樹的深度為( )
具有6個結點的完全二叉樹的深度為( )
具有8個結點的完全二叉樹的深度為( )
具有125個結點的完全二叉樹的深度為( )
具有1024個結點的完全二叉樹的深度為( )
例題3:完全二叉樹的結點數為n,求該完全二叉樹的深度(層數)。
解:設所求完全二叉樹的深度為k。
深度為k得完全二叉樹的前k-1層是深度為k-1的滿二叉樹,一共有2^(k-1)-1個結點。
由於完全二叉樹深度為k,故第k層上還有若干個結點,因此該完全二叉樹的結點個數: n>2^(k-1)-1。
另一方面,假設節點最多,
由此可推出:
又因k-1和k是相鄰的兩個整數,故有。
每日練習
1.完全二叉樹對每個節點從上往下,從左往右編號,第i層的第j個節點的編號是( )
A 2^i+j B 2^i+j-1 C 2^(i-1)+j D 2^(i-1)+j-1
2.一棵有n個節點的完全二叉樹的高度是( )
3.二叉樹是重要的數據結構,5個點的不同的二叉樹有( )個。
A22 B 30 C 40 D 42
4.完全二叉樹的結點個數為4 * N + 3,則它的葉結點個數為( )。
A 2*N B 2*N-1 C 2*N+1 D 2*N-2 E 2*N+2
5.滿二叉樹的葉結點個數為N,則它的結點總數為( )。
A N B 2*N C 2*N–1 D 2*N+1 E 2N–1
6.在有N個葉子節點的哈夫曼樹中,其節點總數為( )
A 不確定 B 2N-1 C 2N+1 D 2N
7.一棵二叉樹高度為h,所有結點的度為0,或為2,則此樹最少有( )個結點
A2^(h-1) B 2^h-1 C 2^h+1 D h+1
8.按照二叉樹的定義,具有3個結點的二叉樹有( ) 種。
A 3 B 4 C 5 D 6
9、[多選題]對一個滿二叉樹,m個樹葉,K個分枝結點,n個結點,則:( )
A.n=K+m B.K+m=2n C.m=K-1 D.n=2K-1
10. [多選題]關於二叉樹的正確說法是( )。
A 完全二叉樹一定是滿二叉樹 B 滿二叉樹一定是完全二叉樹
C 深度為h的二叉樹最多有2^h-1個結點(h>=1),最少有h個結點
D 對於任意一棵二叉樹,如果其葉結點數為N0,而度數為2的結點總數為N2,則N0=N2+1
E 在二叉樹中,第i層的結點總數不超過2^(i-1);
11. 完全二叉樹的結點個數為11,則它的葉結點個數為( )
A.4 B.3 C.5 D.2 E. 6
12. 一個高度為h 的二叉樹最少結點數目是( )。
A 2^h+1 B h C 2^h-1 D 2^h E 2^(h-1)
13. 設有一棵k叉樹,其中只有度為0和k兩種結點,設n0,nk分別表示度為0和度為k的結點個數,試求出n0,nk之間的關系(n0=數學表達式,數學表達式僅含nk,k和數字)
14. 如果一棵m度樹中有n1個度為1的結點,n2個度為2的結點,…….有nm個度為m的結點,則該樹中葉結點的的個數=______________.