# 105-construct-binary-tree-from-preorder-and-inorder-traversal Try it on leetcode ## Description

Given two integer arrays preorder and inorder where preorder is the preorder traversal of a binary tree and inorder is the inorder traversal of the same tree, construct and return the binary tree.

 

Example 1:

Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]
Output: [3,9,20,null,null,15,7]

Example 2:

Input: preorder = [-1], inorder = [-1]
Output: [-1]

 

Constraints:

## Solution(Python) ```Python # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def buildTree(self, preorder: List[int], inorder: List[int]) -> Optional[TreeNode]: preorder_index = 0 def array_to_tree(l, r): nonlocal preorder_index if l > r: return None n_value = preorder[preorder_index] node = TreeNode( preorder[preorder_index]) preorder_index += 1 node.left = array_to_tree(l,inorde_index[n_value]-1 ) node.right = array_to_tree(inorde_index[n_value]+1, r ) return node inorde_index = { val:i for i,val in enumerate(inorder)} return array_to_tree(0, len(preorder)-1) ```