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

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

http://www.nowcoder.com/questionTerminal/a861533d45854474ac791d90e447bafd

一. 思路

按照平时的判断方法去想。只理解到使用递归思想。

前序遍历是根、左子树、右子树;
中序遍历是左子树、根、右子树;
后序遍历是左子树、右子树、根;

核心思路就是找到根,区分左右子树,判断是否违反了二叉搜索树的原则,即左子树<根<右子树。

二. 代码

public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        if (sequence == null || sequence.length == 0) return false;
        return helpVerify(sequence, 0, sequence.length-1);
    }

    public boolean helpVerify(int [] sequence, int start, int root) {
        if (start > root) return true;
        int i;
        //中序遍历是:左子树、右子树、根
        //找到左右子树的分界点
        for (i = start; i < root; i++) {
            if (sequence[i] > sequence[root]) break;
        }

        //在右子树中判断是否有小于root的值,若有则返回false
        for (int j = i; j < root; j++) {
            if (sequence[j] < sequence[root]) return false;
        }

        return helpVerify(sequence, start, i-1) && helpVerify(sequence, i, root-1);
    }
}
全部评论

相关推荐

05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
点赞 评论 收藏
分享
牛客848095834号:举报了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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