二叉树左叶子数量python
时间: 2024-10-15 09:03:15 浏览: 11
在Python中,如果你想计算一棵二叉树的左叶子节点的数量,你可以编写一个递归函数来遍历二叉树。左叶子节点是指那些没有右孩子的节点。以下是一个简单的例子:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def count_left_leaves(root):
if root is None:
return 0
elif root.left is None and root.right is None: # 当前节点是叶子节点且是左叶
return 1
else:
# 继续递归检查左子树,因为右子树不影响左叶计数
return count_left_leaves(root.left)
# 使用示例:
# 创建一个二叉树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4) # 左叶子节点
# 调用函数计算左叶子数量
left_leaf_count = count_left_leaves(root)
print(f"左叶子节点数量: {left_leaf_count}")
相关问题
二叉树统计叶子结点
要统计二叉树中的叶子节点,可以使用递归的方法来求解。递归的基本思路是:如果当前节点为空,则返回0;如果当前节点不为空,但左右子树都为空,则说明当前节点是叶子节点,返回1;否则,递归地求解当前节点的左右子树中的叶子节点数量,然后将它们相加,即可得到当前节点下的叶子节点数量。
以下是一个示例代码:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def count_leaves(root: TreeNode) -> int:
if not root:
return 0
if not root.left and not root.right:
return 1
return count_leaves(root.left) + count_leaves(root.right)
```
在这个示例代码中,首先定义了一个 `TreeNode` 类来表示二叉树的节点。然后,定义了一个名为 `count_leaves` 的函数,它接受一个二叉树的根节点作为参数,返回该二叉树中叶子节点的数量。
在函数中,首先判断当前节点是否为空,如果是,则返回0;否则,再判断当前节点是否为叶子节点,如果是,则返回1;否则,递归地求解当前节点的左右子树中叶子节点的数量,将它们相加,并返回结果。
二叉树的叶子结点个数
二叉树的叶子结点是指没有子节点的节点,因此计算二叉树的叶子结点个数需要遍历整棵树并统计叶子结点的数量。可以使用递归或迭代的方式实现遍历,以下是两种常见的实现方式:
1. 递归实现
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def count_leaf_nodes(root: TreeNode) -> int:
if not root:
return 0
if not root.left and not root.right:
return 1
return count_leaf_nodes(root.left) + count_leaf_nodes(root.right)
```
2. 迭代实现
```python
def count_leaf_nodes(root: TreeNode) -> int:
if not root:
return 0
stack = [root]
count = 0
while stack:
node = stack.pop()
if not node.left and not node.right:
count += 1
if node.left:
stack.append(node.left)
if node.right:
stack.append(node.right)
return count
```
阅读全文