資料結構——樹結構【二叉樹與二分搜尋樹】
阿新 • • 發佈:2018-12-13
關於樹的一些概念
節點的度
結點擁有的子樹數稱為結點的度。度為0的結點稱為葉子結點或終端結點,度不為0的結點稱為非終端結點或分支結點。除根結點以外,分支結點也稱為內部結點。樹的度是樹內各結點的度的最大值。
層次與深度
有序與無序樹
樹林
二叉樹
在我們初學JavaSE時候肯定寫過這麼一個程式:
猜100以內的整數,注意猜的次數不能超過7個,回答者只回答大了還是小了?本質上就是一個二分查詢方法
斜樹【特殊的二叉樹】
所有的結點都只有左子樹的二叉樹叫左斜樹。所有結點都是隻有右子樹的二叉樹叫右斜樹。這兩者統稱為斜樹。
完全二叉樹
滿二叉樹
二叉樹性質
性質3證明
設n為總結點數,n1為度為1的結點數,n2為度為2的結點數,n0為終端結點數(葉子節點數)
一個節點對應一個分支,分支線數為n-1是因為根節點A沒有父節點,也沒有分支。
二叉樹特點:
1、二叉樹具有唯一的根節點
2、二叉樹每個節點都有兩個孩子,左孩子、右孩子
3、葉子節點為13、22、29、42
4、二叉樹每個節點最多有一個父親,根節點沒有父親節點
5、二叉樹具有天然的遞迴結構,每個節點的左子樹是二叉樹,每個節點的右子樹也是二叉樹
6、二叉樹不一定都是"滿"的,二叉樹"空"的地方可以看做NULL,即使一個節點也稱為二叉樹
二分搜尋樹
二分搜尋樹的特點
1、二分搜尋樹也是二叉樹
2、二分搜尋樹的每個節點的值大於左子樹的所有節點的值,小於其右子樹的所有節點值
3、每一棵子樹也是二分搜尋樹
4、儲存的元素必須具有可比較性,如樹中儲存學生資訊,可以根據學生學號進行比較
二分搜尋樹的程式碼實現
class Node{
E e;
//左孩子
Node left;
//右孩子
Node right;
}