二叉樹的定義_儲存_常見形態_性質:
(一)二叉樹定義:
(二)二叉樹的特點,性質:
(2.1)二叉樹的性質:
(2.1.1)葉子節點數=雙分支節點數+1;即n0=n2+1
解析:n=n0+n1+n2=n1+2*n2;所以:n0=n2+1;
(2.1.2)二叉樹上第i層上最多有2^(i-1)個節點。(i>=1)
(2.1.3)高度為h的二叉樹最多有2^h-1個節點。(h>=1)
(三)二叉樹的儲存結構:
(3.1)順序儲存:
(1)定義:
用一段連續的記憶體單元來存放二叉樹。
n個節點,如果從0號元素開始存放。則
1)若i=0,則節點i為根節點;若i>0,則節點i的父節點為[(i-1)/2]向下取整。
2)若2*i+1<=n-1,則節點i的左孩子為2*i+1;
3)若2*i+2<=n-1,則節點i的右孩子為2*i+2;
(2)適用於:
順序儲存結構適用於 滿二叉樹,完全二叉樹,以及堆。
(3.2)鏈式儲存:
二叉樹的鏈式結構:
typedef struct bitnodebitnode;
注意:(1)含有n個節點的 二叉鍊錶中含有n+1空指標域。
(2)使用二叉鍊錶查詢某個節點的左右孩子的時間代價為o(1),尋找其父節點的代價為o(n),實際在不同的應用中,還可以增加某些指標域,如增加指向父節點的指標,此時尋找某節點父節點的代價才為o(1)。
(四)二叉樹的5中基本形態以及catlan數:
圖一,圖二:
(五)完全二叉樹與滿二叉樹:
(5.1)完全二叉樹定義:
二叉樹除最後一層外,其他所有層上的節點數都達到了最大值,且最後一層的葉子節點依次排列在該層最左邊的連續位置上。
(5.1.1)完全二叉樹性質:
(1)葉子節點分布在最大層以及次大層上,且最大層上的葉子節點,依次排列在最左邊的連續位置上
(2)n1<=1;且如果 有單分支節點,則該節點只有左孩子,沒有右孩子。
(3)按層編號時,一旦某節點i為葉子節點或單分支節點,則編號大於i的節點均為葉子節點。
(4)當節點總數n為奇數時,n1=0;當n為偶數時,n1=1;
分析:n=n1+2*n2+1;且n1<=1
(5)具有n 個節點的完全二叉樹的高度為(log2n向下取整+1)或者(log2(n+1)向上取整)。
(6)若i<=[n/2]向下取整;(n為節點個數),則節點i為分支節點,否則為葉子節點。
(5.2)滿二叉樹:fullbinarytree:
樹的每一層都含有最多的節點,即高度為h 的樹含有2^h-1個節點。
二叉樹的定義 性質 儲存
二叉樹的定義 二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 二叉樹常被用於實現二叉查詢樹和二叉堆。二叉樹的每個結點至多只有二棵子樹 不存在度大於2的結點 二叉樹的子樹有左右之分,次序不能顛倒。特殊二叉樹 1.斜樹 所...
k叉樹的性質 二叉樹的定義 性質 儲存
二叉樹的定義 二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 二叉樹常被用於實現二叉查詢樹和二叉堆。二叉樹的每個結點至多只有二棵子樹 不存在度大於2的結點 二叉樹的子樹有左右之分,次序不能顛倒。特殊二叉樹 1.斜樹 所...
二叉樹的定義,性質及儲存
二叉樹是乙個有窮的結點集合 這個集合可以為空 若不為空,則它是由根結點和稱為其左子樹tl和右子樹tr的兩個不相交的二叉樹組成 二叉樹有五種基本形態 空結點,只有乙個根結點,只有根結點和左子樹,只有根結點和右子樹,有根結點和左子樹及右子樹 注 二叉樹的子樹有左右順序之分 1.斜二叉樹 skewed b...