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

二叉搜索树的后序遍历序列

作者: twilight_mao | 来源:发表于2018-11-30 17:16 被阅读0次

题目描述

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

思路

1.二叉搜索树(二叉排序树)的特点是左节点<根<右节点(左子树<根<右子树),数组的左右一个元素为根节点
2.根节点的前面可分成两部门,前一部分(左子树)的值均小于根,后一部分(右子树)的值均大于根

代码

public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        if (sequence == null || sequence.length == 0) {
            return false;
        }
        if (sequence.length == 1) {
            return true;
        }
        return isSquenceOfBST(sequence, 0, sequence.length - 1);
    }
    public boolean isSquenceOfBST(int[] seq, int start, int end) {
        if (start >= end) {
            return true;
        }
        int i = start;
        while (seq[i] < seq[end]) {
            ++i;
        }
        for (int j = i; j < end; j++) {
            if (seq[j] < seq[end]) {
                return false;
            }
        }
        return isSquenceOfBST(seq, start, i - 1) && isSquenceOfBST(seq, i, end-1);
    }
}

相关文章

网友评论

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

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