由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请问LC上一道题:Validate BST
相关主题
问一个leetcode上Validate Binary Search Tree的问题这最小公共父母节点有bug吗?
leetcode valid bst new test cases 过不去了。。。大家帮忙看看 问题在哪啊?由preorder 来建 bst,为什么后面没
判断是不是binary search tree-leetcode问题在哪儿啊 kth Node of BST,大家帮忙
G家电面发现一个很恶心的基础问题
亚麻三面面经,攒人品,求好运求问一个Java问题
新鲜Google面经Find the node with given value in binary tree in in-order
请教这么一个题:BST maximum sum path有没有人同觉得Recover Binary Search Tree的solution using O(n) space并不是那么straight forward么?
贴个自己的答案:Binary Tree Max Path SumFlatten Binary Tree to Linked List的recursive解法
相关话题的讨论汇总
话题: return话题: root话题: max话题: value话题: min
进入JobHunting版参与讨论
1 (共1页)
s******3
发帖数: 61
1
原先的OJ很容易通过,
public class Solution {
public boolean isValidBST(TreeNode root) {
return rec(root, Integer.MIN_VALUE, Integer.MAX_VALUE);
}

public boolean rec(TreeNode root, int min, int max) {
if (root == null) return true;

if (root.val <= min || root.val >= max) return false;

return rec(root.left, min, root.val) && rec(root.right, root.val,
max);
}
}
但现在OJ加了新的test case,会有
Input: {2147483647}
Output: false
Expected: true
到达极端min,max时,判定条件就不适用了
这样的话程序该怎么改啊?
谢谢指教!
w*****t
发帖数: 485
2
将int max, int min 改成指针:
int *max, int *min
初始的时候都为null, 表示上下界
java的话应该也可以用null
s******3
发帖数: 61
3
不懂啊,
能否展开讲讲?
java下怎么用?

【在 w*****t 的大作中提到】
: 将int max, int min 改成指针:
: int *max, int *min
: 初始的时候都为null, 表示上下界
: java的话应该也可以用null

g*****g
发帖数: 34805
4
You can setup boolean instance variable to mark if Integer.MIN and MAX are
taken.
if(taken && equals) => false
T******e
发帖数: 157
5
inorder的时候记录前一个值
y*****e
发帖数: 712
6
这题是我面groupon的店面题,所以印象深刻。。
有两个写法,一个是5楼说的,记录前一个值,比较是不是一直在变大。我和你是一样
的写法,都是比较左右两个叶子。对于max和min两个test case,最简单的还是直接拿
出来判断一下
public boolean validate(TreeNode root){
if(root == null)
return true;
return helper(root, Integer.MIN_VALUE, Integer.MAX_VALUE);
}

private boolean helper(TreeNode root, int low, int high){
if(root == null)
return true;
if(root.val == Integer.MIN_VALUE && root.left != null)
return false;
if(root.val == Integer.MAX_VALUE && root.right != null)
return false;
if(low <= root.val && root.val <= high){
return helper(root.left, low, root.val - 1) && helper(root.right,
root.val + 1, high);
}
return false;
}
x********k
发帖数: 256
7
java 下的函数可以用isValidBSTRecur(TreeNode root, Integer min, Integer max)
然后你就可以用
if (min != null && root.val <= min) return false;
if (max != null && root.val >= max) return false;
这样的判断了。
调用时也是可以用null值isValidBSTRecur(root,null,null);

【在 s******3 的大作中提到】
: 不懂啊,
: 能否展开讲讲?
: java下怎么用?

1 (共1页)
进入JobHunting版参与讨论
相关主题
Flatten Binary Tree to Linked List的recursive解法亚麻三面面经,攒人品,求好运
请教一道g算法题新鲜Google面经
查找binary tree中有多少个uni-valued subtree请教这么一个题:BST maximum sum path
BST查找next lowest 可以达到 O(lg N)?贴个自己的答案:Binary Tree Max Path Sum
问一个leetcode上Validate Binary Search Tree的问题这最小公共父母节点有bug吗?
leetcode valid bst new test cases 过不去了。。。大家帮忙看看 问题在哪啊?由preorder 来建 bst,为什么后面没
判断是不是binary search tree-leetcode问题在哪儿啊 kth Node of BST,大家帮忙
G家电面发现一个很恶心的基础问题
相关话题的讨论汇总
话题: return话题: root话题: max话题: value话题: min