您的位置:首页 > 编程语言 > Go语言

leetcode#105 Construct Binary Tree from Preorder and Inorder Traversal

2017-03-28 18:54 573 查看
Desciption

Given preorder and inorder traversal of a tree, construct the binary tree.

这道题很简单,先序的第一个元素就是根元素,然后在中序中找到对应的位置,则左边的就是左子树,右边的即为右子树。值得注意的是,C++切片操作很难用,所以我就用Go写的解答。最后大部分debug时间都在解决语法问题T_T

Solution

/**
* 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 := new(TreeNode)
root.Val = preorder[0]

var i int = 0
for; i < len(inorder); i++ {
if inorder[i] == preorder[0] {
break
}
}

root.Left = buildTree(preorder[1: i+1], inorder[0: i])
root.Right = buildTree(preorder[i+1: len(preorder)], inorder[i+1: len(inorder)])
return root
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  go
相关文章推荐