由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - BST查找next lowest 可以达到 O(lg N)?
相关主题
请教这么一个题:BST maximum sum path请问LC上一道题:Validate BST
这最小公共父母节点有bug吗?求教Leetcode题目:Lowest Common Ancestor
大家帮忙看看 问题在哪啊?由preorder 来建 bst,为什么后面没largest bst 解法不理解的地方
问题在哪儿啊 kth Node of BST,大家帮忙Interview question::
发现一个很恶心的基础问题一个老题binary tree找 lowest common ancestor 的code (请教
求问一个Java问题写了个symmetric tree的stack based iterative实现,有个bug
Find the node with given value in binary tree in in-order一道msft的题
inorder traversal的空间复杂度是O(N) 还是O(logN)?A家面经求Offer
相关话题的讨论汇总
话题: treenode话题: null话题: root话题: target话题: cur
进入JobHunting版参与讨论
1 (共1页)
d********e
发帖数: 321
1
最近遇到next lowest的题,我写了下面这个inorder traversal (largest ->
smallest)的代码,但是对方坚持让我写 O(lg N),但是TreeNode 只有 left, right
pointer,没有parent pointer, 我觉得不可能啊,大牛有啥好办法吗?
public static Integer findNextLowest(TreeNode root, int target) {
Stack stack = new Stack<>();
TreeNode cur = root;
while (cur != null || stack.size() > 0) {
while (cur != null) {
stack.push(cur);
cur = cur.right;
}
TreeNode node = stack.pop();
if (node.val < target) return node.val; // found the next lowest
cur = node.left;
}
return null;
}
s*****p
发帖数: 30
2
这道题的思路和 BST 查找 ceiling, floor 的思路一样的吧, 到geeksforgeeks上面
搜就有了
m**********1
发帖数: 52
3
public static Integer findNextLowest(TreeNode root, int target) {
if (root == null) {
return Integer.MIN_VALUE;
} else if (root.val >= target) {
return findNextLowest(root.left, target);
} else if (root.val < target) {
return Math.max(root.val, findNextLowest(root.right, target));
} else {
return root.val;
}
}

【在 d********e 的大作中提到】
: 最近遇到next lowest的题,我写了下面这个inorder traversal (largest ->
: smallest)的代码,但是对方坚持让我写 O(lg N),但是TreeNode 只有 left, right
: pointer,没有parent pointer, 我觉得不可能啊,大牛有啥好办法吗?
: public static Integer findNextLowest(TreeNode root, int target) {
: Stack stack = new Stack<>();
: TreeNode cur = root;
: while (cur != null || stack.size() > 0) {
: while (cur != null) {
: stack.push(cur);
: cur = cur.right;

d********e
发帖数: 321
4
这个代码的最后一个else 貌似是never hit啊,还有给的target value可能不在树上

【在 m**********1 的大作中提到】
: public static Integer findNextLowest(TreeNode root, int target) {
: if (root == null) {
: return Integer.MIN_VALUE;
: } else if (root.val >= target) {
: return findNextLowest(root.left, target);
: } else if (root.val < target) {
: return Math.max(root.val, findNextLowest(root.right, target));
: } else {
: return root.val;
: }

h*********n
发帖数: 11319
5
如果不在树上那
TreeNode* inorderSuccessor(TreeNode* root, target t) {
if (root == NULL || p == NULL) return NULL;

TreeNode *suc = NULL;
while (root != NULL) {
if (root->val <= t) {
root = root->right;
} else {
suc = root;
root = root->left;
}
}
return suc;
}
target不在树上的话应该必须O(N)了

【在 d********e 的大作中提到】
: 这个代码的最后一个else 貌似是never hit啊,还有给的target value可能不在树上
s*******a
发帖数: 8
6
不在树上也是lgn。这个函数在树里,每层只看一个元素。所以树的高度就是复杂度

【在 h*********n 的大作中提到】
: 如果不在树上那
: TreeNode* inorderSuccessor(TreeNode* root, target t) {
: if (root == NULL || p == NULL) return NULL;
:
: TreeNode *suc = NULL;
: while (root != NULL) {
: if (root->val <= t) {
: root = root->right;
: } else {
: suc = root;

s*******i
发帖数: 406
7
private static TreeNode findNextLowest(TreeNode root, int target){
TreeNode node = root;
TreeNode res = null;
while(node != null){
if(node.val >= target){
node = node.left;
}
if(node.val < target){
res = node;
node = node.right;
}
}
return res;
}
1 (共1页)
进入JobHunting版参与讨论
相关主题
A家面经求Offer发现一个很恶心的基础问题
leetcode上的sorted list to BST求问一个Java问题
讨论几道google题(附个人答案)Find the node with given value in binary tree in in-order
把leetcode做完了inorder traversal的空间复杂度是O(N) 还是O(logN)?
请教这么一个题:BST maximum sum path请问LC上一道题:Validate BST
这最小公共父母节点有bug吗?求教Leetcode题目:Lowest Common Ancestor
大家帮忙看看 问题在哪啊?由preorder 来建 bst,为什么后面没largest bst 解法不理解的地方
问题在哪儿啊 kth Node of BST,大家帮忙Interview question::
相关话题的讨论汇总
话题: treenode话题: null话题: root话题: target话题: cur