2-11
任何一棵二叉樹的葉結點在先序、中序和后序遍歷序列中的相對次序
遍歷順序 ,令所有遍歷中的 根==NULL 遍歷順序都是 左右,即左節點先於右節點,不會改變順序;
2-xx
先序序列遍歷為 a b c d 的二叉樹有多少個?
14
運用卡特蘭算式 , n = 4 ,ans = C(n,2*n)/(n+1) = 14
錯誤:
特例: A-B-C 一條線上,C是根節點;
中序遍歷:ABC
前序遍歷:CBA
2-2
如果一棵非空k(k≥2)叉樹T中每個非葉子結點都有k個孩子,則稱T為正則k叉樹。若T的高度為h(單結點的樹h=1),則T的結點數最少為:
這不就是滿樹(h0 = h-1) 節點數 + 1嗎
這道題目是 k0 +k1 +k2+.....kh-2 共有 h-1 個元素
1*(kh-1-1)/(k-1) + 1,選A?
NONONO,讀題可知:
最少的情況是根節點加上根節點的k個孩子,加上根節點的第一個孩子的k個孩子,再加上'''''',以此類推;
1+k+k+k+k+k (加 h-1 個) ,答案就是(h-1)*k+1,嗯,沒有,選D;
( √ )9.用二叉鏈表法(link-rlink)存儲包含n個結點的二叉樹,結點的2n個指針區域中有n+1個為空指針。
(正確。用二叉鏈表存儲包含n個結點的二叉樹,結點共有2n個鏈域。由於二叉樹中,除根結點外,每一個結點有且僅有一個雙親,所以只有n-1個結點的鏈域存放指向非空子女結點的指針,還有n+1個空指針。)即有后繼鏈接的指針僅n-1個。
( √ )10. 〖01年計算機系研題〗具有12個結點的完全二叉樹有5個度為2的結點。
最快方法:用葉子數=[n/2]=6,再求n2=n0-1=5
2. 【計算機研2000】 一棵深度為6的滿二叉樹有 n1+n2=0+ n2= n0-1=31 個分支結點和 26-1 =32 個葉子。
注:滿二叉樹沒有度為1的結點,所以分支結點數就是二度結點數。
3. 一棵具有257個結點的完全二叉樹,它的深度為 9 。
( 注:用ë log2(n) û+1= ë 8.xx û+1=9
4. 【全國專升本統考題】設一棵完全二叉樹有700個結點,則共有 350 個葉子結點。
答:最快方法:用葉子數=[n/2]=350
http://blog.sina.com.cn/s/blog_8ba111f10100vkm3.html
5. 設一棵完全二叉樹具有1000個結點,則此完全二叉樹有 500 個葉子結點,有 499 個度為2的結點,有 1 個結點只有非空左子樹,有 0 個結點只有非空右子樹。
答:最快方法:用葉子數=[n/2]=500 ,n2=n0-1=499。 另外,最后一結點為2i屬於左葉子,右葉子是空的,所以有1個非空左子樹。完全二叉樹的特點決定不可能有左空右不空的情況,所以非空右子樹數=0.
6. 【嚴題集6.7③】 一棵含有n個結點的k叉樹,可能達到的最大深度為 n ,最小深度為 2 。
答:當k=1(單叉樹)時應該最深,深度=n(層);當k=n-1(n-1叉樹)時應該最淺,深度=2(層),但不包括n=0或1時的特例情況。教材答案是“完全k叉樹”,未定量。)
7. 【96程試題1】 二叉樹的基本組成部分是:根(N)、左子樹(L)和右子樹(R)。因而二叉樹的遍歷次序有六種。最常用的是三種:前序法(即按N L R次序),后序法(即按 L R N 次序)和中序法(也稱對稱序法,即按L N R次序)。這三種方法相互之間有關聯。若已知一棵二叉樹的前序序列是BEFCGDH,中序序列是FEBGCHD,則它的后序序列必是 F E G H D C B 。 解:法1:先由已知條件畫圖,再后序遍歷得到結果;
法2:不畫圖也能快速得出后序序列,只要找到根的位置特征。由前序先確定root,由中序先確定左子樹。例如,前序遍歷BEFCGDH中,根結點在最前面,是B;則后序遍歷中B一定在最后面。
法3:遞歸計算。如B在前序序列中第一,中序中在中間(可知左右子樹上有哪些元素),則在后序中必為最后。如法對B的左右子樹同樣處理,則問題得解。
8.【全國專升本統考題】中序遍歷的遞歸算法平均空間復雜度為 O(n) 。
答:即遞歸最大嵌套層數,即棧的占用單元數。精確值應為樹的深度k+1,包括葉子的空域也遞歸了一次。
9. 【計算機研2001】 用5個權值{3, 2, 4, 5, 1}構造的哈夫曼(Huffman)樹的帶權路徑長度是 33 。
解:先構造哈夫曼樹,得到各葉子的路徑長度之后便可求出WPL=(4+5+3)×2+(1+2)×3=33
(15)
(9) (6) (注:兩個合並值先后不同會導致編碼不同,即哈夫曼編碼不唯一)
4 5 3 (3) (注:合並值應排在葉子值之后)
1 2
(注:原題為選擇題:A.32 B.33 C.34 D.15)
三、單項選擇題(每小題1分,共11分)
( C )1. 不含任何結點的空樹 。
(A)是一棵樹; (B)是一棵二叉樹;
(C)是一棵樹也是一棵二叉樹; (D)既不是樹也不是二叉樹
答:以前的標答是B,因為那時樹的定義是n≥1
( C )2.二叉樹是非線性數據結構,所以 。
(A)它不能用順序存儲結構存儲; (B)它不能用鏈式存儲結構存儲;
(C)順序存儲結構和鏈式存儲結構都能存儲; (D)順序存儲結構和鏈式存儲結構都不能使用
( C )3. 〖01年計算機研題〗 具有n(n>0)個結點的完全二叉樹的深度為 。
(A) élog2(n)ù (B) ë log2(n)û (C) ë log2(n) û+1 (D) élog2(n)+1ù
注1:éx ù表示不小於x的最小整數;ë xû表示不大於x的最大整數,它們與[ ]含義不同!
注2:選(A)是錯誤的。例如當n為2的整數冪時就會少算一層。似乎ë log2(n) +1û是對的?
( A )4.把一棵樹轉換為二叉樹后,這棵二叉樹的形態是 。
(A)唯一的 (B)有多種
(C)有多種,但根結點都沒有左孩子 (D)有多種,但根結點都沒有右孩子
5. 【94程P11】 從供選擇的答案中,選出應填入下面敘述 ? 內的最確切的解答,把相應編號寫在答卷的對應欄內。
樹是結點的有限集合,它A 根結點,記為T。其余的結點分成為m(m≥0)個 B
的集合T1,T2,…,Tm,每個集合又都是樹,此時結點T稱為Ti的父結點,Ti稱為T的子結點(1≤i≤m)。一個結點的子結點個數為該結點的 C 。
供選擇的答案
A: ①有0個或1個 ②有0個或多個 ③有且只有1個 ④有1個或1個以上
B: ①互不相交 ② 允許相交 ③ 允許葉結點相交 ④ 允許樹枝結點相交
C: ①權 ② 維數 ③ 次數(或度) ④ 序
答案:ABC=1,1,3
6. 【95程P13】 從供選擇的答案中,選出應填入下面敘述 ? 內的最確切的解答,把相應編號寫在答卷的對應欄內。
二叉樹 A 。在完全的二叉樹中,若一個結點沒有 B ,則它必定是葉結點。每棵樹都能惟一地轉換成與它對應的二叉樹。由樹轉換成的二叉樹里,一個結點N的左子女是N在原樹里對應結點的 C ,而N的右子女是它在原樹里對應結點的 D 。
供選擇的答案
A: ①是特殊的樹 ②不是樹的特殊形式 ③是兩棵樹的總稱 ④有是只有二個根結點的樹形結構
B: ①左子結點 ② 右子結點 ③ 左子結點或者沒有右子結點 ④ 兄弟
C~D: ①最左子結點 ② 最右子結點 ③ 最鄰近的右兄弟 ④ 最鄰近的左兄弟
⑤ 最左的兄弟 ⑥ 最右的兄弟
答案:A= B= C= D=
答案:ABCDE=2,1,1,3
四、簡答題(每小題4分,共20分)
1. 【嚴題集6.2①】一棵度為2的樹與一棵二叉樹有何區別?
答:度為2的樹從形式上看與二叉樹很相似,但它的子樹是無序的,而二叉樹是有序的。即,在一般樹中若某結點只有一個孩子,就無需區分其左右次序,而在二叉樹中即使是一個孩子也有左右之分。
2.〖01年計算機研題〗設如下圖所示的二叉樹B的存儲結構為二叉鏈表,root為根指針,結點結構為:(lchild,data,rchild)。其中lchild,rchild分別為指向左右孩子的指針,data為字符型,root為根指針,試回答下列問題:
1. 對下列二叉樹B,執行下列算法traversal(root),試指出其輸出結果;
2. 假定二叉樹B共有n個結點,試分析算法traversal(root)的時間復雜度。(共8分)
二叉樹B
解:這是“先根再左再根再右”,比前序遍歷多打印各結點一次,輸出結果為:A B C C E E B A D F F D G G
特點:①每個結點肯定都會被打印兩次;②但出現的順序不同,其規律是:凡是有左子樹的結點,必間隔左子樹的全部結點后再重復出現;如A,B,D等結點。反之馬上就會重復出現。如C,E,F,G等結點。
時間復雜度以訪問結點的次數為主,精確值為2*n,時間漸近度為O(n).
3. 〖01年計算機研題〗【嚴題集6.27③】給定二叉樹的兩種遍歷序列,分別是:
前序遍歷序列:D,A,C,E,B,H,F,G,I; 中序遍歷序列:D,C,B,E,H,A,G,I,F,
試畫出二叉樹B,並簡述由任意二叉樹B的前序遍歷序列和中序遍歷序列求二叉樹B的思想方法。
解:方法是:由前序先確定root,由中序可確定root的左、右子樹。然后由其左子樹的元素集合和右子樹的集合對應前序遍歷序列中的元素集合,可繼續確定root的左右孩子。將他們分別作為新的root,不斷遞歸,則所有元素都將被唯一確定,問題得解。