编写一个二叉树的递归算法,实现:给定一颗二叉树的“扩展先序遍历序列”,创建这颗二叉树
时间: 2024-10-30 08:05:34 浏览: 6
在计算机科学中,给定一个二叉树的扩展先序遍历序列,即根节点、左子树的扩展先序遍历序列、右子树的扩展先序遍历序列,我们可以使用递归来构建这棵树。扩展先序遍历顺序是先根节点,再左子树,最后右子树,并且在左右子树中,也是先根节点后其余元素。
以下是一个简单的Python示例,如何通过递归方式重建二叉树:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def buildTree(preorder):
if not preorder: # 如果列表为空,表示树为空
return None
root_val = preorder[0] # 根据先序遍历,根节点总是第一个
root = TreeNode(root_val) # 创建新的根节点
# 分离根节点之后的序列,用于构造左子树和右子树
index = 1
left_subtree = buildTree(preorder[index:])
right_subtree = buildTree(preorder[index:] if left_subtree else [])
# 将左子树和右子树连接到根节点上
root.left = left_subtree
root.right = right_subtree
return root
# 示例:
preorder = [1, 2, 4, 5, 3, 6] # 假设这个是扩展先序遍历序列
root = buildTree(preorder)
```
在这个例子中,`preorder`是输入的扩展先序遍历序列,我们通过递归地找到每个节点的位置,然后分割出对应的子序列来构建整个二叉树。
阅读全文