# Construct [[binary-tree|Binary Tree]] from [[preorder|Preorder]] and [[inorder|Inorder]] Traversal
https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/
```python
if not preorder:
return None
root = TreeNode(val := preorder[0])
idx = inorder.index(val)
root.left = self.buildTree(preorder[1:idx + 1], inorder[:idx])
root.right = self.buildTree(preorder[idx + 1:], inorder[idx + 1:])
return root
```
The values must be **unique**. Otherwise knowing the `root` in `preorder` is not sufficient to find it in `inorder`.