天天看點

Algorithm:樹相關算法(BBT/BST/B樹/R樹)簡介(二叉查找樹、二叉查找樹的插入節點、二叉查找樹的删除、二叉樹的周遊、平衡二叉樹)C 語言實作

樹的基礎知識

1、二叉樹的遍—前序、中序、後序

一、二叉樹

1、CBT

2、BST—二叉查找樹BST的增删改查

1、BST的查找節點

2、BST的插入節點

3、BST的删除節點

3、BBT—平衡二叉樹BBT→AVL/RBT

0、RBT紅黑樹和AVL

1、BBT的旋轉

2、BBT的插入

3、BBT的查找

4、BBT的删除

4、堆

5、哈夫曼樹HT/最優二叉樹

二、多路查找樹:多叉樹——二叉到多叉的思考

1、多叉樹

1、多叉樹的查找與插入

2、B樹及其變種——分裂節點、合并節點

3、R樹—R樹在實踐中的應用

樹相關算法的代碼實作

1、二叉樹的周遊——前中後、通過前中求後

2、二叉查找樹、BST的插入節點、BST的删除

3、BBT單旋轉、雙旋轉、BBT的插入、BBT的删除

參考文章:Algorithm:【Algorithm算法進階之路】之資料結構基礎知識

      樹Tree是一種抽象資料類型ADT,或是實作這種抽象資料類型的資料結構,用來模拟具有樹狀結構性質的資料集合。它是由n(n>=1)個有限節點組成一個具有層次關系的集合。把它叫做“樹”是因為它看起來像一棵倒挂的樹,也就是說它是根朝上,而葉朝下的。它具有以下的特點:

(1)、每個節點有零個或多個子節點;

(2)、沒有父節點的節點稱為根節點;

(3)、每一個非根節點有且隻有一個父節點;

(4)、除了根節點外,每個子節點可以分為多個不相交的子樹;

二叉樹的周遊,都要從先從左區域開始周遊。

1、前序周遊、中序周遊、後序周遊

注:根結點Degree、左子樹L、右子樹R

先(根)序周遊(根左右DLR):

中(根)序周遊(左根右LDR):BST的中序一定是遞增有序的序列!

後(根)序周遊(左右根LRD):

結論:

(1)、二叉樹結點的DLR、LDR、LRD中,所有葉子結點的先後順序都是一緻的,因為所有的葉節點都是從左到右的!

前序周遊:先(根)序周遊,根左右DLR

根節點→前序周遊左子樹(DLR)→前序周遊右子樹(DLR)

中序周遊:中(根)序周遊,左根右LDR。BST的中序一定是遞增有序的序列!

中序周遊左子樹(LDR)→根節點→中序周遊右子樹(LDR)

(1)、比如35是因為3就是節點5的左子數;67是因為7是6的右子樹,是以先周遊6的左子樹即空→根節點6→右子樹7

後序周遊:後(根)序周遊,左右根LRD

後序周遊左子樹(LRD)→後序周遊右子樹(LRD)→根節點

2、相關結論

(1)、二叉樹結點的DLR、LDR、LRD中,所有葉子結點的先後順序都是一緻的,因為所有的葉節點都是從左區域到右區域的!

3、問題類型

(1)、通過前序中序求後序

Algorithm:【Algorithm算法進階之路】之資料結構(數組、字元串、連結清單、棧、隊列、樹、圖、哈希、堆)相關習題

https://yunyaniu.blog.csdn.net/article/details/100699314

繼續閱讀