樹的基礎知識
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