二叉树中叶子节点的统计和树高问题
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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。