資料結構之二叉樹

2021-08-01 08:30:46 字數 1167 閱讀 2380

定義:滿足以下條件的就是樹: 

1. 有且僅有乙個特定的稱為根root的結點。 

2. 當n>1時,其餘結點可分為m(m>0)個互不相交的有限集,其中每個集合本身又是乙個棵樹,並稱為根的子樹。

樹是資料結構中一種常見的資料結構,比如我們排序中常見的二叉樹,紅黑樹等。最常見的是樹形表示法和廣義表表示法。樹的結構示意圖如下所示: 

二叉樹是一種特殊的順序樹,它有左右兩個孩子子樹,即左右孩子順序不能替換。二叉樹的結點數為大於0小於等於2。常見的二叉樹結構如下: 

性質1 在二叉樹的第i層上至多有個結點(i>=1)

由資料歸納法即可證明, 

i=1,結點數為1 

i=2,結點數為2 

i=3,結點數為4 

i=4,結點數為8 

i=n, 結點數為. 

性質2 深度為k的二叉樹至多有-1個結點(k >=1)

換言之,如果二叉樹的深度確定,則其最大的結點數也是確定的。 

證明(可以利用性質1) 

深度為k的二叉樹的結點個數=二叉樹中每一層結點個數的總和。即為: 

= 1 + 2 + 4 + 8 + … + =-1(等比公式) 

性質3 二叉樹中,終端結點個數與度為2的結點個數有如下關係: 

n0= n2 + 1 

性質4:結點數為n的完全二叉樹,其深度為(向下取整)+ 1

由性質2及完全二叉樹的定義有: 

性質5:在按層序編號的n個結點的完全二叉樹中,任意乙個結點i()有: 

(1) i = 1時,結點i是樹的根,否則(i> 1),結點i的雙親為i/2(向下取整),如 

,取i = 2. 

(2) 2i > n時,結點i無左孩子,為葉結點,否則結點i的左孩子為結點2i 

(3) 2i+1 > n時,結點i無右孩子,否則結點i的右孩子為結點2i +1. 

性質6: 含有n個結點的二叉鍊錶中,有n + 1個空鏈域。

資料結構之二叉樹

在二叉樹中每個節點最多只能有兩個子節點。即左子節點和有子節點。在二叉樹中最重要的操作應當是遍歷。即按照某一順序訪問二叉樹中的每乙個節點。一般有如下幾種遍歷方法 1 前序遍歷,即先訪問根幾點,然後再訪問左子節點,最後訪問右子節點。2 中序遍歷,即先訪問左子節點,然後再訪問根節點,最後訪問右子節點。3 ...

資料結構之二叉樹

來看一下樹的結構 class treenode public treenode string value 首先,為了方便後面看到效果,先手動初始化乙個有4個節點的二叉樹 tree tree new tree treenode root new treenode root treenode node1...

資料結構之二叉樹

資料結構 大一學c 的時候就非常頭疼的東西,沒想到現在js都要考資料結構與演算法了,看到有面試題手寫乙個二叉樹插入,對比劍指offer上的題真算得上是太簡單了。本次整合一下做過的二叉樹題的思路和 希望能對邏輯思維的提公升有個幫助。寫出二叉樹插入方法insert。分析 首先判斷根節點有無,如果沒有就賦...