二叉樹定義:
n個結點的有限集合,該集合或者爲空集,或者由一個根結點和兩棵互不相交的、分別稱爲根結點的左子樹和右子樹的二叉樹組成。
滿二叉樹
所有分支結點(非葉子結點)都有左子樹和右子樹,並且所有葉子都在同一層上,這樣的二叉樹成爲滿二叉樹。葉子只出現在最下一層;非葉子結點的度一定是2;同樣深度的二叉樹中,滿二叉樹的結點數和葉子數最多。
完全二叉樹
按照層序編號,所有結點的編號都與滿二叉樹對應的二叉樹。葉子結點只能出現在最後兩層,最下層作連續,次下層右連續
二叉樹的性質
1.在二叉樹的第i層上最多有(2的i-1次方)個結點。(數學歸納法)
2.在深度爲k的二叉樹中,最多有(2的k次方-1)個結點。(等比數列求和)
3.度爲2的結點數n2與度爲0的結點數n0有如下關係:n0 = n2 + 1(結點數與連接線數的關係)
4.n個結點的完全二叉樹的深度爲(log2爲底n的向下取整+1)(性質2+不等式)
5.
二叉樹的存儲結構
順序存儲:數組下標爲對應的完全二叉樹的層序編號
鏈式存儲:二叉鏈表,一個數據域,兩個指針域分別指向左右孩子
- typedef struct BiTNode{
- ElemType data;
- struct BiTNode *lchild;
- struct BitNode *rchild;
- }BitNode,*BiTree