package main import . "nc_tools" /* * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param preOrder int整型一维数组 * @param vinOrder int整型一维数组 * @return TreeNode类 */ func reConstructBinaryTree(preOrder []int, vinOrder []int) *TreeNode { // write code here m := len(preOrder) n := len(vinOrder) if m == 0 || n == 0 { return nil } // pre : 1,2,4,7,3,5,6,8 // vin : 4,7,2,1,5,3,8,6 root := &TreeNode{Val: preOrder[0]} i := 0 for i = 0; i < n; i++ { if vinOrder[i] == preOrder[0] { break } } root.Left = reConstructBinaryTree(preOrder[1:i+1], vinOrder[:i]) root.Right = reConstructBinaryTree(preOrder[i+1:], vinOrder[i+1:]) return root }