在刷題的時候因為概念太多了越刷越懵所以先整理一下。
題目來源:牛客網專項練習牛客網專項練習_校招題庫練習題_行測題庫考點考題 (nowcoder.com)
樹:
參考連結:如何理解資料結構中樹的度(樹的度是什麼意思)?-CSDN部落格
(他這裡打的“節點數“是指節點,,意思就是上圖表示的,但是我節點和結點是混淆的,我看到也有人混淆用了(目移))
關於樹、森林、二叉樹之間的轉換:二叉樹與樹、森林之間的轉換_二叉樹轉化為森林-CSDN部落格 規則是對的,只是該連結作者圖有的配錯了。(來自牛客網使用者NII)
二叉樹:
二叉樹的基本性質:對於任何一棵二叉樹,如果葉子結點個數為N0,度為2的結點個數為N2,則必然存在關係N0 = N2+1。
二叉樹共有N個節點,求葉子節點數?N為偶數,葉子節點為N/2;N為奇數,葉子節點為N/2+1
樹的遍歷順序:
參考連結:前序、中序、後續遍歷二叉樹 - 知乎 (zhihu.com)
前序遍歷:根左右。
中序遍歷:左根右。
後序遍歷:左右根。
(記憶捷徑是將“根”一直向右邊擠,根左右,左根右,左右根)
相關圖片我就不放了,對我來說只有這個順序值得記。
平衡二叉樹:
參考連結:平衡二叉樹(AVL)插入結點後的再平衡思路_avl樹再平衡的方法-CSDN部落格
簡而言之,平衡二叉樹是二叉搜尋樹的一個特例,節點的平衡因子是左右子樹的高度差,所有節點的平衡因子均小於等於1則這顆樹就是平衡二叉樹。被破壞平衡的節點最近也是插入節點的爺爺結點。不可能找到插入節點使得父結點不平衡的情況。當插入了節點導致不平衡後可以透過節點的旋轉使得樹再平衡。二叉搜尋樹中節點的旋轉不會破壞二叉搜尋樹的規則。
然後就是如何命名不平衡樹的?左左(LL)型意思是從插入結點開始,需要往左上走兩次才能到不平衡節點,其他同理。
旋轉的方法在原連結有說。以下的圖片中x是不平衡節點。
完全二叉樹:
參考連結:常見資料結構——完全二叉樹(定義、特徵、節點個數的判斷以及C++簡單實現)-CSDN部落格
完全二叉樹是由滿二叉樹而引出來的,若設二叉樹的深度為h
,除第 h 層外
,其它各層 (1~h-1) 的結點數都達到最大個數(即1~h-1層為一個滿二叉樹)
,第 h 層所有的結點都連續集中在最左邊,這就是完全二叉樹。
完全二叉樹,有左子樹不一定有右子樹,有右子樹一定有左子樹,葉子節點只能出現在倒數第一和倒數第二層,適合於順序結構儲存。
完全二叉樹中,度數為0的節點個數比度數為2的節點個數多1,且度數為1的節點個數是1或0,可以結合二叉樹的三個節點公式(二叉樹那裡講了)
在連結中解釋了完全二叉樹的k(深度)的取值範圍,嗯,牛客網有人給出了更好的公式。具有n個結點的完全二叉樹(包括滿二叉樹)的高度為【log2 n】+1 或者(【log2 (n+1 )】)【log2 n】+1中的【】是向下取整,【log2 (n+1 )】中的【】是向上取整
哈夫曼樹:
參考連結:超好理解的哈夫曼樹(最優二叉樹)與例題_哈夫曼樹的構造例題-CSDN部落格
雖然有人說這篇部落格的哈夫曼樹建錯了,但是我看不出來(我覺得蠻對的),不過原理是正確的。
哈夫曼樹又被稱為二叉最優樹。
Huffman 樹的帶權路徑長度WPL等於 各葉子結點的帶權路徑長度之和
哈夫曼樹是一種特殊的完全二叉樹。所以完全二叉樹的公式都可使用。
二叉搜尋樹:
二叉排序樹,也稱二叉搜尋樹,特點是 左子樹的節點值 < 根節點值 < 右子樹的節點值。所以最小值的左子樹為空。注意,由於樹其實是遞迴結構(),所以這裡的規則同樣也適用子樹。
參考連結:資料結構——二叉搜尋樹詳解-CSDN部落格
線索二叉樹:
參考連結:線索二叉樹(圖解+完整程式碼)-CSDN部落格
(來自牛客網使用者 ryanxw)
B樹:(老朋友了)
參考連結:圖解B樹的原理及操作_b樹原理詳解-CSDN部落格
(以下來自牛客網使用者 ICANTHEARYOU)
一道雜題:(寫這道題目的時候腦袋空空的隨便選了一個)