美文网首页计算机
Interview Question - Give a preo

Interview Question - Give a preo

作者: Richardo92 | 来源:发表于2016-09-24 07:56 被阅读16次

    问题:
    给你一个 BST的pre-order / post-order array, reconstruct 出这个BST

    pre-order

    private int counter_Pre = 0;
    public TreeNode restoreBST_Pre(int[] nums) {
        return helper_Pre(nums, Integer.MIN_VALUE, Integer.MAX_VALUE);
    }
    
    private TreeNode helper_Pre(int[] nums, int min, int max) {
        if (counter_Pre >= nums.length) {
            return null;
        }
        int val = nums[counter_Pre];
        if (val > min && val < max) {
            counter_Pre++;
            TreeNode root = new TreeNode(val);
            root.left = helper_Pre(nums, min, val);
            root.right = helper_Pre(nums, val, max);
            return root;
        }
        return null;
    }
    
    

    post-order

    int counter_Post;
    public TreeNode restoreBST_Post(int[] nums) {
        counter_Post = nums.length - 1;
        return helper_Post(nums, Integer.MIN_VALUE, Integer.MAX_VALUE);
    }
        
    private TreeNode helper_Post(int[] nums, int min, int max) {
        if (counter_Post < 0) {
            return null;
        }
        int val = nums[counter_Post];
        if (min < val && val < max) {
            counter_Post--;
            TreeNode root = new TreeNode(val);
            root.right = helper_Post(nums, val, max);
            root.left = helper_Post(nums, min, val);
            return root;
        }
        return null;
    }
    

    Anyway, Good luck, Richardo! -- 09/23/2016

    相关文章

      网友评论

        本文标题:Interview Question - Give a preo

        本文链接:https://www.haomeiwen.com/subject/vklxyttx.html