括号输入法,写python代码判断二叉树叶子是否相同
时间: 2024-11-18 21:19:24 浏览: 20
括号输入法通常用于表示树的数据结构,特别是在表达式解析或算法分析中。对于二叉树,我们可以使用递归的方式来判断所有叶子节点的值是否都相等。在Python中,这可以通过定义一个Node类来代表每个节点,并在遍历过程中检查叶子节点来实现。
首先,我们创建一个简单的二叉树节点类`TreeNode`:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
```
然后,我们可以编写一个函数来判断所有叶子节点的值是否一致:
```python
def are_all_leaves_same(root):
if root is None:
return True # 空树视为叶子节点的值相同
if root.left is None and root.right is None: # 如果是叶子节点
return all_leaf_values([root.val]) # 判断当前值和其他叶子节点的值是否一致
else:
# 非叶子节点,继续递归判断其左右子树
return are_all_leaves_same(root.left) and are_all_leaves_same(root.right)
def all_leaf_values(values):
if not values:
return True
return len(set(values)) == 1 # 使用set去除重复并检查元素数量
# 示例使用
# 创建二叉树并测试
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(2)
print(are_all_leaves_same(root)) # 输出:True,因为两个叶子节点的值都是2
# 或者
root.left = TreeNode(3)
print(are_all_leaves_same(root)) # 输出:False,因为叶子节点的值不全相同
阅读全文