二叉鏈表樹中結點個數 與空指針個數 二叉樹的邊數的關係
二叉樹的 每個結點可以表示爲
struct Node
{
int number;
Node* lchild,*rchild; //含有兩個指針
};
二叉樹的的二叉鏈表存儲結構中每個結點有2個指針。每個結點有0個、1個或者2個空指針對應有2個、1個、0個非空指針。
二叉樹中邊的個數等於非空指針的個數。
假設二叉樹中節點的總個數爲N,
假設二叉樹中邊的個數爲M
假設二叉樹中度爲0的結點的個數爲n0,
假設二叉樹中度爲1的結點的個數爲n1,
假設二叉樹中度爲2的結點的個數爲n2.
所以有 n0+n1+n2=N -------------(1)
二叉樹中除了根結點之外,其他的結點都有一條便進入該結點,所以二叉樹中邊的總個數爲M=N-1;-------(2)
又 M=n1+2*n2;-------------------------(3)
所以由 (1)(2)(3)可得 n0=n2+1;--------------------(4)
設空節點的 個數爲 K ,則K=2*n0+n1-------------------(5)
結合(1)(4)(5)可以得到 K=N+1. (空指針的的個數比結點總個數多1)
由(2)可以知道 邊數M=N-1;(二叉樹的邊數爲結點個數減1)
由(4)可以知道度爲0的結點的個數(葉子結點個數)=度爲2的結點個數+1 (n0=n2+1;)