题解 | #重建二叉树#

重建二叉树

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

using System;
using System.Collections.Generic;

/*
public class TreeNode
{
    public int val;
    public TreeNode left;
    public TreeNode right;

    public TreeNode (int x)
    {
        val = x;
    }
}
*/

class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param preOrder int整型一维数组
     * @param vinOrder int整型一维数组
     * @return TreeNode类
     */
    List<int> preorder;
    IDictionary<int,int> inorderh = new Dictionary<int,int>();
    public TreeNode reConstructBinaryTree (List<int> preOrder, List<int> vinOrder) {
        //preorder 计数
        //inorder 寻找root并计算左右子树长度
        this.preorder = preOrder;
        for (int i = 0; i < vinOrder.Count; i++) {
            inorderh.Add(vinOrder[i], i);
        }
        //if(preorder.Length == 1) return new TreeNode(preorder[0]);
        return DeduceTree2(0, 0, preorder.Count - 1);
    }
    public TreeNode DeduceTree2(int root, int left, int right) {
        if (left > right) return null;
        TreeNode node = new TreeNode(preorder[root]);
        int leftLength = inorderh[preorder[root]] - left;
        node.left = DeduceTree2(root + 1, left, left + leftLength - 1);
        node.right = DeduceTree2(root + leftLength + 1, left + leftLength + 1, right);
        return node;
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 17:30
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
身边有人上海、深圳&nbsp;6、7k&nbsp;都去了,真就带薪上班了。
程序员小白条:木的办法, 以后越来越差,还是家附近宅着吧,毕业的人越来越多,岗位都提供不出来,经济又过了人口红利期
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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