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; }
  • 相关阅读:
    poj 2674 Linear world
    poj 3185 The Water Bowls
    The Largest Clique (uva11324)
    Proving Equivalences (LA 4287)
    强联通分量( HihoCoder 1185 )
    求点双联通分量(HihoCoder
    求桥,割点(HihoCoder
    欧拉回路
    uva10054
    表达式树(公共表达式消除 uva 12219)
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5497235.html
Copyright © 2011-2022 走看看