1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// @Title: 重建二叉树 (重建二叉树 LCOF)
// @Author: 15816537946@163.com
// @Date: 2022-02-21 19:24:27
// @Runtime: 8 ms
// @Memory: 4 MB
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
 
 // 分治
func buildTree(preorder []int, inorder []int) *TreeNode {
    if len(preorder) == 0 {
        return nil 
    }

    root := &TreeNode{preorder[0],nil,nil}
    i:=0 
    for;i<len(inorder);i++ {
        if inorder[i] == preorder[0] {
            break
        }
    }
    root.Left = buildTree(preorder[1:len(inorder[:i])+1], inorder[:i])
    root.Right = buildTree(preorder[len(inorder[:i])+1:],inorder[i+1:])
    return root
}