题解 | #重建二叉树#

重建二叉树

http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6

package main

/*
type TreeNode struct {
    Val int
    Left *TreeNode
    Right *TreeNode
}
*/

func reConstructBinaryTree( pre []int ,  vin []int ) *TreeNode {
    var i int
    length := len(pre)
    if length == 0 {
        return nil
    }
    root := &TreeNode{pre[0], nil, nil} //根据前序遍历的第一个节点创建根节点
    for i = 0; i < length; i ++ {
        if vin[i] == pre[0] { //找出在中序遍历中根节点的位置
            break
        }
    }
    root.Left = reConstructBinaryTree(pre[1:len(vin[:i])+1], vin[:i]) //左子树的前序遍历和中序遍历
    root.Right = reConstructBinaryTree(pre[len(vin[:i])+1:], vin[i+1:]) //右子树的前序遍历和中序遍历
    return root
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-23 16:31
点赞 评论 收藏
分享
流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务