已知二叉树先序和中序求二叉树
时间: 2023-08-16 16:21:59 浏览: 108
可以通过递归的方式来构建二叉树。具体步骤如下:
1. 先序遍历中的第一个节点一定是根节点。
2. 在中序遍历中找到根节点的位置,根节点左边的节点都在左子树中,右边的节点都在右子树中。
3. 递归构建左子树和右子树。
下面是示例代码(假设先序遍历结果存在preorder数组中,中序遍历结果存在inorder数组中):
```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)
pos = inorder.index(root_val)
left_inorder = inorder[:pos]
right_inorder = inorder[pos+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
```
注意,这里假设先序遍历和中序遍历结果中每个节点的值都不相同。如果存在相同节点值的情况,需要对构建过程做一些调整。
阅读全文