_node left;
_node right;
int value;
}node;
void calulateDegree(node rt,int two,int one,int zero)
{
if(rt==NULL)
return;
if(rt->left!=NULL&&rt->right!=NULL)
two++;
else if(rt->left!=NULL||rt->right!=NULL)
one++;
else
zero++;
calulateDegree(rt->left,two,one,zero);
calulateDegree(rt->right->two,one,zero);
}int NumOfOne(BiNodep)
{
int count=0;
if(p->lchild!=NULL&&p->rchild=NULL)
{
count++;
NumOfOne(p->lchild);
}
else if(p->rchild!=NULL&&p->lchild=NULL)
{
count++;
NumOfOne(p->rchild);
}
return count;
}
int Num()
{
return NumOfOne(root);
}设二叉树中度为2结点个数n2,度为1结点个数n1,叶子结点个数n0,按照二叉树的性质:
n2 = n0 -1,因此度为2结点数为465-1 = 464
所以度为1结点个数为1024-465-464=95你好,
叶子结点数(度为0的节点数)=度为2的节点数 + 1
所以,度为2的节点数 = 69
总结点数=度为0的节点数 + 度为1的节点数 + 度为2的节点数
=70 + 80 + 69
=219不好意思 昨天比较忙 屁颠屁颠的 今天给你写了下 就把这3个算法写了下 在自己的程序上测试过了 都没问题 树的建立就你自己做吧 3个 *** 作如下
int LeafCount(BTree T)
{
if (!T) return 0;
else if (!T->lchild && !T->rchild)
{
return 1;
}
else
{
return LeafCount(T->lchild) + LeafCount(T->rchild);
}
}
void OneDegree(BTree T,int &count)
{
if (!T || (!T->lchild && !T->rchild)) return;
else if (T->lchild && !T->rchild)
{
++count;
OneDegree(T->lchild,count);
}
else if (!T->lchild && T->rchild)
{
++count;
OneDegree(T->rchild,count);
}
else
{
OneDegree(T->lchild,count);
OneDegree(T->rchild,count);
}
}
int TreeDepth(BTree T)
{
if (!T) return 0;
else
{
return (TreeDepth(T->lchild) > TreeDepth(T->rchild) TreeDepth(T->lchild) : TreeDepth(T->rchild)) + 1;
}
}设二叉树中度为0,1,2的结点分别有N0,N1,N2个,总结点数为N
(二叉树中结点数满足N0=N2+1)
总结点数N=N0+N1+N2,将上式代入,即=N2+1+N1+N2=2N2+N1+1
根据你给的题,结点总数=216+15=47
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)