您的位置:首页 > 编程语言 > C语言/C++

如何求一棵二叉树深度和叶子数(递归)C++版

2012-04-29 01:04 232 查看
(1)求一棵二叉树的深度用递归比较简单,求一棵二叉树的深度可以递归定义为:

若为空树,则深度为0;

否则,比较它的左子树的深度和它的右子树的深度,如果左子树的深度大于右子树,则树的深度=左子树+1,反之,则树的深度=右子树+1;

源程序如下:

template<class T>

int BiTree<T>::countHighOfBiTree(BiTreeNode<T> *currentNode)

{

if(!currentNode) return 0;

if(countHighOfBiTree(currentNode->getLChild() ) >=countHighOfBiTree(currentNode->getRChild() ))

return countHighOfBiTree(currentNode->getLChild() )+1;

else

return countHighOfBiTree(currentNode->getRChild() )+1;

}

(2)求一棵二叉树的叶子数用递归求比较简单,求一棵二叉树的叶子数的递归定义为:

若为空树,叶子数为0;

若只有根结点,则叶子数为1;

否则,叶子数为根结点的左子树叶子数+右子树叶子数。

源程序为:

template<class T>

int BiTree<T>::countNumOfLeaf(BiTreeNode<T> *currentNode)

{

if(!currentNode) return 0; //空树

if(!currentNode->getLChild() && !currentNode->getRChild() )
//当前结点为叶子结点

return 1;

else //左子树叶子数+右子树叶子数

return countNumOfLeaf(currentNode->getLChild())+countNumOfLeaf(currentNode->getRChild() );

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐