[105] Construct Binary Tree from Preorder and Inorder Traversal
https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/description/
- algorithms
- Medium (37.84%)
- Source Code: 105.construct-binary-tree-from-preorder-and-inorder-traversal.py
- Total Accepted: 213.4K
- Total Submissions: 528.2K
- Testcase Example: '[3,9,20,15,7]\n[9,3,15,20,7]'
Given preorder and inorder traversal of a tree, construct the binary tree.
Note: You may assume that duplicates do not exist in the tree.
For example, given
preorder = [3,9,20,15,7] inorder = [9,3,15,20,7]
Return the following binary tree:
3
/
9 20 /
15 7
python
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def buildTree(self, preorder, inorder):
"""
:type preorder: List[int]
:type inorder: List[int]
:rtype: TreeNode
"""
if not preorder or not inorder:
return None
node = TreeNode(preorder[0])
idx = inorder.index(preorder[0])
preorder.pop(0)
node.left = self.buildTree(preorder, inorder[0:idx])
node.right = self.buildTree(preorder, inorder[idx+1:])
return node