剑指offer24:判断一个二叉树的后序遍历序列是否为二叉搜索树的后序遍历序列

public static boolean isBSTSequence(int[] s,int l, int r) {
        if (s == null || r <= 0)
            return false;
        int n = r;
        int root = s[n - 1];
        int i = 0;
        for (; i < n - 1; i++) {
            if (s[i] > root)
                break;
        }
        int j = i;
        for (; j < n - 1; j++) {
            if (s[j] < root)
                return false;
        }

        boolean left = true;
        if (i > 0)
            left = isBSTSequence(s, l , i);

        boolean right = true;
        if(i<n-1)
            right = isBSTSequence(s, i,r-1);
        
        return (left&&right);
    }
    public static boolean isBSTSequenceJudge(int[] s) {
        if(s==null) return false;
        return isBSTSequence(s,0,s.length);
    }

 

posted on 2016-04-22 16:34  todayjust  阅读(144)  评论(0编辑  收藏  举报

导航