# 从中序与后序遍历序列构造二叉树

<p>根据一棵树的中序遍历与后序遍历构造二叉树。</p>

<p><strong>注意:</strong><br>
你可以假设树中没有重复的元素。</p>

<p>例如，给出</p>

<pre>中序遍历 inorder =&nbsp;[9,3,15,20,7]
后序遍历 postorder = [9,15,7,20,3]</pre>

<p>返回如下的二叉树：</p>

<pre>    3
   / \
  9  20
    /  \
   15   7
</pre>


## template

```python

class Solution:
    def buildTree(self, inorder: List[int], postorder: List[int]) -> TreeNode:
        def build_tree(in_left, in_right, post_left, post_right):
            if in_left > in_right:
                return

            post_root = post_right

            root = TreeNode(postorder[post_root])

            in_root = inorder_map[root.val]

            size_of_left = in_root - in_left

            root.left = build_tree(
                in_left, in_root - 1, post_left, post_left + size_of_left - 1
            )

            root.right = build_tree(
                in_root + 1, in_right, post_left + size_of_left, post_root - 1
            )

            return root

        size = len(inorder)

        inorder_map = {}

        for i in range(size):
            inorder_map[inorder[i]] = i

        return build_tree(0, size - 1, 0, size - 1)


```

## 答案

```python

```

## 选项

### A

```python

```

### B

```python

```

### C

```python

```