zoukankan      html  css  js  c++  java
  • 98. Validate Binary Search Tree

        /*
         * 98. Validate Binary Search Tree 
         * 11.23 By Mingyang 
         * 这个题目开始用dfs的循环做时,我第一次把root的null的判断写在主函数里面,殊不知这么仅仅判断了root
         * 子分支并没有做判断。另外需要注意的是用long不用int,否则会溢出。
         * 另外一种方法就是Tree里面的中序遍历。dfs用stack实现
         * 那么dfs的方法还有一个注意的就是long的运用,开始用的int,Input:[2147483647]
         * Output:false  Expected:true
         */
        public boolean isValidBST(TreeNode root) {
            return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);
        }
        public boolean isValidBST(TreeNode root, long minVal, long maxVal) {
            if (root == null) return true;
            if (root.val >= maxVal || root.val <= minVal) return false;
    return isValidBST(root.left, minVal, root.val) && isValidBST(root.right, root.val, maxVal); } public boolean isValidBST1(TreeNode root) { Stack<TreeNode> stack = new Stack<TreeNode>(); TreeNode cur = root; TreeNode pre = null; while (!stack.isEmpty() || cur != null) { if (cur != null) { stack.push(cur); cur = cur.left; } else { TreeNode p = stack.pop(); //这里出现的p就是inorder里面不断出现的最小的数,就是最左边的数 if (pre != null && p.val <= pre.val) { return false; } pre = p; cur = p.right; } } return true; }
  • 相关阅读:
    SQLite-SQLiteDatabase 数据库实例练习
    全局配置一个ajax的错误监控
    文件上传&&验证文件格式
    CSS3 resize 属性
    select change()
    window.location.Reload()和window.location.href 区别
    条件检索
    jQuery $.ajax传递数组的traditional参数传递必须true 对象的序列化
    jquery中attr方法和prop方法的区别
    resize
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5497235.html
Copyright © 2011-2022 走看看