前序遍历和中序遍历建立二叉树
时间: 2023-11-26 18:45:18 浏览: 94
根据先序与中序遍历结果建立二叉树
4星 · 用户满意度95%
前序遍历和中序遍历是构建二叉树的两种常用方法之一。具体步骤如下:
1. 在前序遍历中,第一个元素为根节点。
2. 在中序遍历中,找到根节点的位置,将中序遍历分为左子树和右子树。
3. 根据左子树和右子树的长度,在前序遍历中分别找到左子树和右子树的位置。
4. 递归地对左子树和右子树进行上述步骤,直到所有节点都被构建完毕。
下面是一个示例代码:
```
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 = TreeNode(preorder[0])
idx = inorder.index(preorder[0])
root.left = buildTree(preorder[1:idx+1], inorder[:idx])
root.right = buildTree(preorder[idx+1:], inorder[idx+1:])
return root
```
时间复杂度为O(n),其中n为节点数,因为每个节点都会被访问一次。空间复杂度为O(n),因为需要递归地存储每个节点。
阅读全文