Go的递归实现
package main import . "nc_tools" /* * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param pre int整型一维数组 * @param vin int整型一维数组 * @return TreeNode类 */ func reConstructBinaryTree( pre []int , vin []int ) *TreeNode { if len(pre) == 0 { return nil } headVal := pre[0] var pos int for index,val :=range vin { if headVal == val { pos = index break } } leftArray := vin[:pos] rightArray := vin[pos + 1:] leftNode := reConstructBinaryTree(pre[1: pos + 1], leftArray) rightNode := reConstructBinaryTree(pre[pos+1:], rightArray) return &TreeNode{headVal, leftNode, rightNode} }