由遍历序列重构二叉树一题引发的思考

leetcode地址:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/

在leetcode训练时,发现虽然通过了OJ,但是有一处代码(下图划红线处)不严谨,如果二叉树中存在val数值相同的节点则会导致错误

图片说明

于是我将此行代码改正,并重复提交,却发现Time ComplexitySpace Complexity都恶化了

图片说明

what happened?

代码如下:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode buildTree(int[] inorder, int[] postorder) {
        if(inorder == null || postorder == null ||
                inorder.length == 0 || postorder.length == 0
                || inorder.length != postorder.length) return null;

        int end = inorder.length - 1;
        return build(inorder, 0, end, postorder, 0, end);
    }

    private TreeNode build(int[] inorder, int i, int j, int[] postorder, int m, int n){
        if(i == j) return new TreeNode(inorder[i]);
        int val = postorder[n];
        int index = index(inorder, i, j, val);
        if(index == -1) throw new RuntimeException("invalid input");

        TreeNode root = new TreeNode(val);
        int lefts = index - i, rights = j - index;
        root.left = lefts == 0 ? null : build(inorder, i, i + lefts - 1, postorder, m, m + lefts - 1);
        root.right = rights == 0 ? null : build(inorder, i + lefts + 1, j, postorder, m + lefts, n - 1);
        return root;
    }

    private int index(int[] arr, int begin, int end, int val){
        for(int i = begin ; i <= end; i++)
            if(arr[i] == val) return i;
        return -1;
    }
}
#leetcode##Java#
全部评论
根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。
点赞 回复 分享
发布于 2019-11-21 13:20
题目写的假设没有重复呀
点赞 回复 分享
发布于 2019-11-21 13:15

相关推荐

暴杀流调参工作者:春招又试了一些岗位,现在投递很有意思,不仅要精心准备简历,投递官网还得把自己写的东西一条一条复制上去,阿里更是各个bu都有自己的官网,重复操作无数次,投完简历卡完学历了,又该写性格测评、能力测评,写完了又要写专业笔试,最近还有些公司搞了AI辅助编程笔试,有些还有AI面试,对着机器人话也听不明白录屏硬说,终于到了人工面试又要一二三四面,小组成员面主管面部门主管面hr面,次次都没出错机会,稍有不慎就是挂。 卡学历卡项目卡论文卡实习什么都卡,没有不卡的😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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