1. 程式人生 > >資料結構——樹結構【二叉樹與二分搜尋樹】

資料結構——樹結構【二叉樹與二分搜尋樹】

關於樹的一些概念

節點的度

結點擁有的子樹數稱為結點的度。度為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;
}