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

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

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

看到题目的标题中有标签,一直在思考使用栈的解法,奈何能力有限,最终还是没想出来,自己想的解法是递归解法,即确定左右子树后递归判断左右子树:

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

    private boolean verify(int[] a, int s, int e) {
        if (s >= e)
            return true; // 上车先系安全带,安全第一
        int root = a[e];
        int p1 = s;
        while (a[p1] < root) {
            ++p1; // 找到右子树的开始下标
        }
        if (p1 == e) {
            return verify(a, s, e - 1); // 没有右子树的场景
        } else {
            for (int i = p1; i < e; ++i) {
                if (a[i] < root) {
                    return false; // 右子树中不能有比当前根节点更小的值
                }
            }
            return verify(a, s, p1 - 1) && verify(a, p1, e - 1);
        }
    }
}
全部评论

相关推荐

头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
06-14 19:09
门头沟学院 Java
darius_:给制造业搞的,什么物料管理生产管理,设备管理点检,最最关键的就是一堆报表看板。个人觉得没啥技术含量都是些基本的crud,但是业务很繁琐那种
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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