바위타는 두루미

[leetcode]105. Construct Binary Tree from Preorder and Inorder Traversal 본문

Study/Algorithm

[leetcode]105. Construct Binary Tree from Preorder and Inorder Traversal

DoRoMii 2019. 8. 9. 12:08
728x90

105. Construct Binary Tree from Preorder and Inorder Traversal

 

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

 

# 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):
        if not inorder:
            return None
        
        root_index = 0
        for i in range(len(inorder)):
            if inorder[i] == preorder[0]:
                root_index = i
        root = TreeNode(preorder.pop(0))
        root.left = self.buildTree(preorder,inorder[:root_index])
        root.right = self.buildTree (preorder, inorder[root_index+1:])
        return root         
        
        
        
        

 

https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/

Comments