6.2二叉树及二叉树存储结构
二叉樹(Binary Tree):每個結點至多只有兩顆子樹,二叉樹的子樹有左右之分,不能任意顛倒。
下面給出二叉樹的5種基本形態(如下圖)
二叉樹的性質:
1.二叉樹第i層上至多有2^(i-1)個結點(i>=1)。
2.深度為k的二叉樹至多有2^k-1(k>=1)個結點。
3.對任何一顆二叉樹T,如果其終端結點數為n0,度為2的結點數為n2,則n0=n2+1。
怎么證明?如下圖:
這個就比較困難了,需要推導獲得
首先我們再假設度為1的結點數為n1,則二叉樹T的結點總數n=n0+n1+n2
其次我們發現連接數總是等于總結點數n-1,并且等于n1+2*n2
所以n-1=n1+2*n2
所以n0+n1+n2-1=n1+n2+n2
最后n0=n2+1
4.具有n個結點的完全二叉樹的深度為[log2n]+1([]不是中括號,是取下線的意思如,如果是2.3,則取下線后就2)
證明的話就是性質2求k,指數函數和對數函數互為反函數
5.對一顆有n個結點的完全二叉樹(其深度為[log2n]+1)的結點按層序編號,對任意一結點i(i<=i<=n)有以下性質
如果i=1,則結點i是二叉樹的根,無雙親;如果i>1,則其雙親是結點[i/2](取下線)。
如果2i>n,則結點i無做做孩子(結點i為葉子結點);否則其左孩子是結點2i。
如果2i+1>n,則結點i無右孩子;否則其右孩子是結點2i+1。
一顆深度為k且有2^k-1個結點的二叉樹稱為滿二叉樹。
深度為k的,有那個結點的二叉樹,當且僅當其每一個結點都與深度為k的滿二叉樹中編號從1至n的結點一一對應時,稱為完全二叉樹。
如下圖所示:
下面是二叉樹的存儲:
代碼如下:
typedef int ElemType; typedef struct BiTNode {ElemType data;struct BiTNode *lchild, *rchid; }BiTNode,*BiTree;圖就是這樣的:
總結
以上是生活随笔為你收集整理的6.2二叉树及二叉树存储结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微机个人笔记-随机存取存储器(RAM)
- 下一篇: 2.3链表的补充