二叉樹的定義,性質及儲存

2021-08-11 01:50:20 字數 1106 閱讀 1493

二叉樹是乙個有窮的結點集合

這個集合可以為空

若不為空,則它是由根結點和稱為其左子樹tl和右子樹tr的兩個不相交的二叉樹組成

二叉樹有五種基本形態:空結點,只有乙個根結點,只有根結點和左子樹,只有根結點和右子樹,有根結點和左子樹及右子樹

注:二叉樹的子樹有左右順序之分

1.斜二叉樹(skewed binary tree):所有二叉樹樹只有左兒子或者只有右邊 兒子,相當於鍊錶 

2.完美二叉樹(perfect binary tree)/滿二叉樹(full binary tree):除了葉子結點每個結點都有 兩個兒子

3.完全二叉樹(complete binary tree) :有n個結點的二叉樹,對樹中結點按照從上到下從左到右的順序編號,編號為i的結點與滿二叉樹中編號為i的結點在二叉樹中的位置相同(換言之就是在滿二叉樹中從最後一層從最右邊開始依次去掉最後幾個葉子結點即可得到完全二叉樹)

乙個二叉樹第i層的最大結點數為2^(i-1)

深度為k的二叉樹有最大結點總數為2^k -1(等比數列求和:1+2^1+2^2+2^3+..+2^(k-1)=2^k -1)

對於任何非空二叉樹t,若n0表示 葉子結點的個數,n1表示度為1的非葉結點個數,n2表示度為2的非葉結點個數,那麼兩者滿足關係n0=n2+1

證明如下:總的邊數=總結點數-1=n0+n1+n2-1,每個ni結點對向下的邊的貢獻為i,那麼總邊數 =n0+n1+n2=0×n0+1×n1+2×n2.兩邊化簡既得n0=n2+1

*1.順序儲存結構(用陣列儲存)

適用於完全二叉樹:按照從上至下,從左至右順序儲存,一般二叉樹也可以用這種結構 ,但是會造成空間浪費

n個結點的完全二叉樹的結點父子關係:

非根結點i的父節點的序號是[i/2]

結點i的左孩子結點的序號是2i(若2i<=n,否則沒有左孩子)

結點i的右孩子結點的序號是2i+1(若2i+1<=n,否則沒有左孩子)

2.鍊錶儲存

typedef struct treenode *bintree;

typedef bintree position;

struct treenode;

二叉樹的定義 性質 儲存

二叉樹的定義 儲存 常見形態 性質 一 二叉樹定義 二 二叉樹的特點,性質 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 高...

二叉樹的定義 性質 儲存

二叉樹的定義 二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 二叉樹常被用於實現二叉查詢樹和二叉堆。二叉樹的每個結點至多只有二棵子樹 不存在度大於2的結點 二叉樹的子樹有左右之分,次序不能顛倒。特殊二叉樹 1.斜樹 所...

k叉樹的性質 二叉樹的定義 性質 儲存

二叉樹的定義 二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 二叉樹常被用於實現二叉查詢樹和二叉堆。二叉樹的每個結點至多只有二棵子樹 不存在度大於2的結點 二叉樹的子樹有左右之分,次序不能顛倒。特殊二叉樹 1.斜樹 所...