1. 求一棵二叉樹的結點總數的演算法
int
GetCount(BTree
T)
{
if(T==NULL)
return
0;
return
1+GetCount(T.left)+GetCount(T.right);
//=====採用後序遍歷求二叉樹的深度、結點數及葉子數的遞歸演算法========
int
TreeDepth(BinTree
T)
{
int
hl,hr,max;
if(T){
hl=TreeDepth(T->lchild);
//求左深度
hr=TreeDepth(T->rchild);
//求右深度
max=hl>hr?
hl:hr;
//取左右深度的最大值
NodeNum=NodeNum+1;
//求結點數
if(hl==0&&hr==0)
leaf=leaf+1;
//若左右深度為0,即為葉子。
return(max+1);
}
else
return(0);
}
}
2. 編一演算法,計算二叉樹所有節點數。
遞歸方法
樹的節點個數=左孩子節點個數+右孩子節點個數+1
樹為空:結點個數為0
int
Treenodes(BiTree
T)
{
int
num1,num2;
if(T==NULL)
//樹為空
return(0);
num1=Treenodes(T->lchild);
num2=Treenodes(T->rchild);
return(num2+num1+1);//左孩子+右孩子節點個數+1
}
3. 求C語言統計一棵二叉樹節點總數的演算法(只要函數)
用遞歸啊,除了葉子節點以外,每個節點都有左子樹和右子樹,只要判斷子節點不為空就用遞歸調用函數統一子樹的節點數,例如
f(t)=f(l)+f(r)+1;
節點總數等於左子樹的節點數+右子樹的節點數+1
4. 二叉樹結點的演算法
一個結點的度是指該結點的子樹個數。
度為1就是指只有1個子樹(左子樹或者右子樹)。
度為2的結點個數=葉結點個數-1=69
該二叉樹的總結點數=70+80+69=219