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