利用递归遍历算法遍历一颗二元树,输出先序遍历序列及该二元树中全部的叶子节点python
时间: 2024-03-29 14:40:18 浏览: 63
好的,以下是python实现:
```python
class Node:
def __init__(self, val=None, left=None, right=None):
self.val = val
self.left = left
self.right = right
def preorder_traversal(root):
if root:
print(root.val, end=' ')
preorder_traversal(root.left)
preorder_traversal(root.right)
def get_leaves(root):
if not root:
return []
elif not root.left and not root.right:
return [root.val]
else:
return get_leaves(root.left) + get_leaves(root.right)
# 构造二元树
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
root.right.left = Node(6)
root.right.right = Node(7)
# 输出先序遍历序列
print("先序遍历序列为:")
preorder_traversal(root)
# 输出叶子节点
print("\n叶子节点为:")
leaves = get_leaves(root)
print(leaves)
```
输出结果为:
```
先序遍历序列为:
1 2 4 5 3 6 7
叶子节点为:
[4, 5, 6, 7]
```
其中,`Node`类表示二元树的一个节点,`preorder_traversal`函数用于先序遍历二元树并输出遍历序列,`get_leaves`函数用于获取二元树中的叶子节点并返回一个列表。
阅读全文