题目:求二叉树叶子节点的个数/求二叉树第k层的节点个数。
这两个题的方法是一样的,用递归就可以求解
1.叶子节点:
1)当前节点为NULL,返回0
2)没有左右孩子,返回1
3)否则返回左孩子的叶子节点个数加上右孩子的叶子节点个数
size_t BinaryTree::_GetLeefNode(Node* pRoot)
{
if (NULL == pRoot)
return 0;
if (NULL == pRoot->_pLeft && NULL == pRoot->_pRight)
return 1;
return _GetLeefNode(pRoot->_pLeft) + _GetLeefNode(pRoot->_pRight);
}2.第k层:
1)k小于0,返回0
2)k等于0,返回1
3)否则返回左孩子的k-1层节点个数加上右孩子的k-1层节点个数
size_t BinaryTree::_NumOfKLevel(Node* pRoot, int k){
if (k < 0)
return 0;
if (k == 0)
return 1;
return _NumOfKLevel(pRoot->_pLeft, k - 1) + _NumOfKLevel(pRoot->_pRight, k - 1);
}
本文介绍了使用递归方法计算二叉树中叶子节点数量及第k层节点数量的算法实现。通过简单的条件判断,有效地解决了这两类问题。
2095

被折叠的 条评论
为什么被折叠?



