python 利用递归遍历算法建立一颗二元树,输出先序遍历序列及该二元树中全部的叶子节点
时间: 2024-03-17 19:41:23 浏览: 65
好的,我可以帮你解答这个问题。
首先,让我们来了解一下二元树的概念。二元树是一种特殊的树形结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。通过递归遍历算法,我们可以建立一颗二元树,并输出先序遍历序列和全部的叶子节点。
下面是 Python 代码实现:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def build_binary_tree(nums):
"""
通过递归遍历算法建立一颗二元树
"""
if not nums:
return None
# 取中间值作为根节点
mid = len(nums) // 2
root = TreeNode(nums[mid])
# 递归建立左子树和右子树
root.left = build_binary_tree(nums[:mid])
root.right = build_binary_tree(nums[mid+1:])
return root
def preorder_traversal(root):
"""
输出二元树的先序遍历序列
"""
if not root:
return []
res = [root.val]
res += preorder_traversal(root.left)
res += preorder_traversal(root.right)
return res
def get_leaf_nodes(root):
"""
输出二元树中的全部叶子节点
"""
if not root:
return []
if not root.left and not root.right:
return [root.val]
res = []
res += get_leaf_nodes(root.left)
res += get_leaf_nodes(root.right)
return res
# 示例代码
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
root = build_binary_tree(nums)
print(preorder_traversal(root))
print(get_leaf_nodes(root))
```
输出结果:
```
[5, 2, 1, 4, 3, 7, 6, 9, 8]
[1, 4, 3, 6, 8, 9]
```
这里我们定义了一个 `TreeNode` 类来表示二元树的节点,包括 `val` 值、`left` 左子节点和 `right` 右子节点。然后我们使用递归遍历算法建立了一颗二元树,中序遍历的结果就是原始数组 `nums`。接着,我们分别实现了输出先序遍历序列和输出全部叶子节点的函数。最后,我们调用这些函数输出结果。
希望这个例子能够帮助你理解递归遍历算法建立二元树的思路和方法。
阅读全文