美文网首页
二叉树的后续遍历序列

二叉树的后续遍历序列

作者: noexceptionsir | 来源:发表于2017-05-24 16:47 被阅读0次

    题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

    取得最后一个数的值,即根节点,将这个数与前面几个数进行比较,平衡二叉树的后序遍历的话,左子树都比根节点小,如果比根节点大,说明是右子树,记下这个值,向下递归,判断是否符合平衡二叉树的要求。

    public class VerifySquenceOfBST {
    public boolean verifySquenceOfBST (int[] squence) {
        if (squence.length == 0) return false;
        return isTreeBST(squence,0,squence.length - 1);
    }
    
    private boolean isTreeBST(int[] squence, int start, int end) {
        if (start > end) return true;
        int i = 0;
        for(;i < end; i++) {
            if (squence[i] > squence[end]);
            break;
        }
    
        for (int j = i; j < end; j++) {
            if (squence[j] < squence[end]) return false;
        }
    
        return isTreeBST(squence, start, i-1) && isTreeBST(squence, i ,end - i);
        }
    }

    相关文章

      网友评论

          本文标题:二叉树的后续遍历序列

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