二叉树中叶子节点的统计和树高问题
1、已知二叉树以二叉链表进行存储,其中结点的数据域为data,编写算法,统计二叉树中叶子结点值等于x的结点数目。
typedefstructBTNode
{
intdata;
structBTNode*lchild;//左孩子指针
structBTNode*rchild;//右孩子指针
}BTNode;//二叉链表的结构
intnum=0;//用于统计有多少个结点的值与x的值相等
intCountLeaf(BTNode*P,int&num,intx)
{
if(P)
{
if((P->lchild==NULL)&&(P->rchild==NULL)&&(P->data==x))
num++;//对叶子结点计数
if((!P->lchild)&&(!P->rchild))
{
CountLeaf(P->lchild,num,x);
CountLeaf(P->rchild,num,x);
}
}
returnnum;
}
2、已知一棵二叉链表方式存储的二叉树,编写算法计算二叉树的高度。
typedefstructBTNode
{
intdata;
structBTNode*lchild;//左孩子指针
structBTNode*rchild;//右孩子指针
}BTNode;//二叉链表的结构
intTreeHeight(BTNode*root)
{
if(root==NULL)
{
return1;//如果是只有根节点,高度记为1
}
else
{//否则递归计算其左右孩子的高度然后在加上根节点的层数1
return1+max(TreeHeight(root->lchild),TreeHeight(root->rchild));
}
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。