利用前序和中序遍历构建二叉树的递归算法,给出可运行代码和结果
时间: 2024-02-25 17:56:01 浏览: 55
Python利用前序和中序遍历结果重建二叉树的方法
以下是利用前序遍历和中序遍历构建二叉树的递归算法的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, inorder):
if not preorder or not inorder:
return None
root_val = preorder[0]
root = TreeNode(root_val)
root_idx = inorder.index(root_val)
left_inorder = inorder[:root_idx]
right_inorder = inorder[root_idx+1:]
left_preorder = preorder[1:1+len(left_inorder)]
right_preorder = preorder[1+len(left_inorder):]
root.left = buildTree(left_preorder, left_inorder)
root.right = buildTree(right_preorder, right_inorder)
return root
```
我们可以使用以下代码进行测试:
```python
preorder = [3,9,20,15,7]
inorder = [9,3,15,20,7]
root = buildTree(preorder, inorder)
# 层序遍历二叉树
queue = [root]
while queue:
node = queue.pop(0)
print(node.val, end=' ')
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
```
输出结果为:`3 9 20 15 7`,与原二叉树的层序遍历序列相同,说明构建成功。
阅读全文