考研資料結構題目 樹(持續更新)

2021-08-14 23:22:10 字數 3273 閱讀 9933

在度為4的樹中,若有20個度為4的節點,10個度為3的節點,1個度為2的節點,10個度為1的節點,則樹t的葉節點個數是?

這道題是2023年計算機聯考真題。我用手算(半蠻力)解出答案是82,結果是對的,但是耗時較長,而且如果數字再大點也不好算了,因此肯定存在一種更加高效的方法。

我們知道,

於是樹的節點個數n = 1 + 20*4 + 10*3 + 1*2 + 10*1

但同時,樹的節點個數也可以寫成是:葉子節點數+度為1的節點數+…+度為4的節點數

n = n0 + 20 + 10 + 1 + 10,其中n0為葉子節點個數

由上述兩個式子就可解出葉子節點個數為82了。

這個方法解題效率比半蠻力法高多了,而且更準確

設二叉樹有2n個節點,且m這道題涉及到的知識為:

設度為i的節點的數量為ni,則2n = n0 + n1 + n2

又因n0 = n2 + 1,故2n = n1 + 2n2 + 1

因此可以推算出n1 = 2n - 2n2 -1,必為奇數,由此直接判斷本題選c

【2023年計算機聯考真題】若一顆完全二叉樹有768個結點,則該二叉樹葉節點個數為?

該題有兩種演算法。

演算法一:

因此該完全二叉樹最後乙個數值結點的編號為768/2=384(從1開始編號),所以葉子節點個數為768-384=384

演算法二:

n為二叉樹總節點數,ni為 度為i的節點數

n = n0 + n1 + n2n0 = n2 + 1,即n = n1 + 2n2 + 1

因此768 = n1 + 2n2+1,而n1只能等於0或1(完全二叉樹中)

所以可以解出n1 = 1,n2 = 383,所以n0 = n2+1=384

已知一棵有2011個結點的樹,其葉結點個數是11個,該樹對應的二叉樹中無右孩子的結點的個數是?

需要注意的是樹轉換為二叉樹時,是左孩子右兄弟,上述部落格中有筆誤。

在二叉樹中有兩個結點m和n,如果m是n的祖先,可以找到從m到n的路徑的遍歷方式是?

這道題想了我很久,答案是後序遍歷似乎有點難以理解,試想先序遍歷、中序遍歷、層次遍歷都會遍歷到m和n啊,層次遍歷和路徑無關,自然不選,但是先序和中序為何不行?

這就得先看清楚,題目中所寫為m是n的祖先,祖先可不僅僅只能是父節點。如果是父節點,那麼不管哪一種都好說。而祖先的話,試想 n是m的第18代兒子,假設又是滿二叉樹,天吶,從記錄下m開始到找到n,中間可能性有多少?2的18次方種可能,顯然全部記錄下來然後從中選乙個是不現實的吧,所以從上往下找,這種思路本就是不可行的。(沒說清楚?和這個問題很像,可以參考:戳)打個更簡單的比方,乙個皇帝想從幾十億的人中找到你是很難的,但是你想找那個皇帝,卻是很簡單的。

而既然排除了從上往下,也就排除了先序和中序,那後序為什麼可以呢?因為後序遍歷,無論是在左子樹還是右子樹,在返回的路上,都必然會經過祖先節點,所以,不管是不是遞迴的方法,都可以找得到這條路徑。

非遞迴求解該問題的偽**見第八題,只要從棧中提出n,則棧裡面剩下的就是從根節點到n的路徑節點。

線索二叉樹是一種( )結構?

a. 邏輯

b. 邏輯和儲存

c. 物理

d. 線性

答案選c,解題方案見:該題題解

()的遍歷仍需要棧的支援

a. 前序線索樹

b. 中序線索樹

c. 後序線索樹

d. 所有線索樹

這是一道很簡單的題目,顯然選c,因為後序線索樹可能不能根據線索找到直接後繼節點。

這裡小結一下

編寫後序遍歷二叉樹的非遞迴演算法

後序遍歷二叉樹,如果使用遞迴很簡單,就三五句話

void postorder(bitree t)

}

但是使用非遞迴演算法,後序遍歷是最麻煩的一種了,**如下:

void postorder(bitree t)

else

else}}

}

請畫圖理解上述**。且上述**適用於其他情況。

當訪問乙個節點*p時,棧裡節點恰好是*p節點的所有祖先。這構成了從根節點到*p節點的一條路徑,因此本演算法可以求最短路徑、兩個節點的最近公共祖先等。

含有二十個節點的平衡二叉樹的最大深度為()

a. 4      b. 5      c. 6      d. 7

這道題涉及到的就是平衡二叉樹裡的乙個規律:

所以這道題很明顯了,n0 = 0, n1 = 1, n2 = 2, n3 = 4, n4 = 7, n5 = 12, n6 = 20

所以選c

畫出乙個二叉樹,使它既滿足大根堆的要求又滿足二叉排序樹的要求

最大堆是堆的兩種形式之一。

根結點(亦稱為堆頂)的關鍵字是堆裡所有結點關鍵字中最大者,稱為大根堆,又稱最大堆(大頂堆)。

大根堆要求根節點的關鍵字既大於或等於左子樹的關鍵字值,又大於或等於右子樹的關鍵字值。

而且,大根堆還要求樹是完全二叉樹

資料結構老師沒教過堆排序的弱渣飄過

然後就很簡單了,首先,根節點比左右節點都大,而且二叉排序樹要求根節點比右節點小,那麼沒有右節點就得了。然後因為又要求必須是完全二叉樹,所以這棵樹只能有兩個節點,乙個根節點,乙個是根節點的左節點。

所以這棵樹是唯一的!!!

本以為是唯一的,但是經道友指點,還可以是只有乙個根節點的情況,那麼就是這兩種情況啦!

考研資料結構

一 考研中的變數型別 1 基本型別 int float char 2 指標型別 3 結構體型 陣列,結構體 4 void型 考研中 定義無返回值函式。二 控制語句 1 判斷語句if 做決策 2 迴圈語句 做重複的事 for while 講講break與continue break結束整個迴圈 con...

筆試總結 資料結構篇 持續更新

1.單鏈表的沒個節點都具有唯一的前驅節點和唯一的後繼節點,所以當兩個單鏈表存在相交的節點時,這兩個鍊錶則同時擁有這個節點,以及這個節點的所有後繼節點,當這個公共節點是尾節點時,他們則只含有公共乙個節點 尾節點。2.快慢指標是判斷單鏈表是否有環的一種方法 兩個指標,每次移動的步長為2叫做快指標,每次移...

C 資料結構基本演算法 持續更新

測試快排 public static void testquicksort quicksort data,0,data.length 1 1防止下標越界 for int i 0 i data.length i 快速排序 public static void quicksort int dataarr...