完全二叉树的叶子节点个数
时间: 2024-05-13 09:10:54 浏览: 117
完全二叉树是一种特殊的二叉树,它的每一层都被完全填满,除了最后一层可能不满外,其他层的节点数都达到最大值。对于一个完全二叉树,叶子节点是指没有子节点的节点。
完全二叉树的叶子节点个数取决于树的层数和最后一层的节点数。假设完全二叉树的层数为h,最后一层的节点数为n,则叶子节点个数为:
1. 如果最后一层的节点数n等于2^h,即最后一层是满的,则叶子节点个数为2^h。
2. 如果最后一层的节点数n小于2^h,即最后一层不满,则叶子节点个数为n。
所以,完全二叉树的叶子节点个数可以通过判断最后一层是否满来确定。
相关问题
求二叉树叶子结点个数
求二叉树叶子节点的个数,可以通过递归遍历二叉树,然后统计叶子节点的个数来实现。具体实现可以参考以下代码:
``` python
# 定义二叉树结构体
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
# 定义统计叶子节点个数的函数
def count_leaf_node(root):
if not root:
return 0
if not root.left and not root.right:
# 如果当前节点没有左右子节点,说明当前节点是叶子节点
return 1
# 递归遍历左右子树,统计叶子节点个数
return count_leaf_node(root.left) + count_leaf_node(root.right)
# 测试样例
if __name__ == '__main__':
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
root.right.left = TreeNode(6)
print(count_leaf_node(root)) # 输出:3
```
在上述代码中,我们定义了一个二叉树结构体 `TreeNode`,其中包含节点的值 `val`,以及左右子节点 `left` 和 `right`。接着,我们定义了一个函数 `count_leaf_node`,这个函数用来统计二叉树的叶子节点个数。在函数中,我们首先判断当前节点是否为空,如果为空,则返回 0。然后,我们判断当前节点是否为叶子节点,如果是,则返回 1。最后,我们递归遍历当前节点的左右子树,并累加左右子树的叶子节点个数,最终得到二叉树的叶子节点个数。在最后的测试样例中,我们构建了一个二叉树,并统计了它的叶子节点个数,输出结果为 3。
统计二叉树叶子结点个数
统计二叉树叶子结点个数的方法是通过递归实现的。具体步骤如下:
1. 如果当前节点为空,则返回0。
2. 如果当前节点没有左右子节点,则返回1。
3. 否则,递归计算左子树和右子树的叶子结点个数,并将它们相加。
以下是示例代码:
```
int countLeafNodes(TreeNode* root) {
if (root == nullptr) {
return 0;
}
if (root->left == nullptr && root->right == nullptr) {
return 1;
}
return countLeafNodes(root->left) + countLeafNodes(root->right);
}
```
阅读全文