由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 树 inorder下个节点最好办法是啥
相关主题
G电面面经:BT的iterator inorder traversal问几个有关Binary tree的题
BST 找重复节点数问一道二叉树遍历的问题? 谢谢!
bst中序遍历c++ class iteratorrecover binary search tree 常数空间
F家phone interview的一道题请教一个BST找Median的题目
tree traversal nextNode的无递归无stack实现为何找不到很多apple的面筋
reverse linked list 问题, double 和 single 的不同恢复错误的BST
大概说一下昨天的Google Phone Interview求教:binary search tree中找第i大的数
LC的BST iterator到底要考察什么?攒人品,amazon一面经历
相关话题的讨论汇总
话题: node话题: prev话题: data话题: inorder
进入JobHunting版参与讨论
1 (共1页)
g*l
发帖数: 385
1
有 parent link比较容易, 要是没有 parent link, 是不是只能用 iterative inorder
traversal : 找到当前节点, 输出它的下一个?
c******w
发帖数: 102
2
Node* nextNode(Node* root, int data)
{
Node* result = NULL;
while(root)
{
if( root->value > data )
{
result = root;
root = root -> left;
}
else
root = root -> right;
}

return result;
}

inorder

【在 g*l 的大作中提到】
: 有 parent link比较容易, 要是没有 parent link, 是不是只能用 iterative inorder
: traversal : 找到当前节点, 输出它的下一个?

g********d
发帖数: 203
3
BST or just binary tree?

inorder

【在 g*l 的大作中提到】
: 有 parent link比较容易, 要是没有 parent link, 是不是只能用 iterative inorder
: traversal : 找到当前节点, 输出它的下一个?

g*l
发帖数: 385
4
yeah, should be two separate questions. I'm asking both.

【在 g********d 的大作中提到】
: BST or just binary tree?
:
: inorder

g*l
发帖数: 385
5
I don't think it's right.

【在 c******w 的大作中提到】
: Node* nextNode(Node* root, int data)
: {
: Node* result = NULL;
: while(root)
: {
: if( root->value > data )
: {
: result = root;
: root = root -> left;
: }

c******w
发帖数: 102
6
这个算法是针对BST的。 如果是一般的binary tree, 需要通过回朔父节点。

【在 g*l 的大作中提到】
: I don't think it's right.
a****s
发帖数: 22
7
不知道这样行不行, 感觉可以,不过没编译试过.基本意思就是Inorder遍历树,记住当
前节点的In-order上一个节点.
void FindInOrderNextInTreeHelper(Node *p, int data, Node *& next, Node *&
prev)
{
if(!p) return;
FindInOrderNextInTreeHelper(p->left, data, next, prev);
if(prev && prev->data == data)
{
next = p;
return;
}
prev = p;

FindInOrderNextInTreeHelper(p->right, data, next, prev);
}
Node * FindInOrderNextInTree(Node *p, int data)
{
if(!p) return NULL;
Node * next = NULL;
Node * prev = NULL;
FindInOrderNextInTreeHelper(p, data, next, prev);
return next;
}

inorder

【在 g*l 的大作中提到】
: 有 parent link比较容易, 要是没有 parent link, 是不是只能用 iterative inorder
: traversal : 找到当前节点, 输出它的下一个?

h*******0
发帖数: 68
8
不知道这样行不行, 感觉可以,不过没编译试过.基本意思就是Inorder遍历树,记住当
前节点的In-order上一个节点.
void FindInOrderNextInTreeHelper(Node *p, int data, Node *& next, Node *&
prev)
{
if(!p) return;
FindInOrderNextInTreeHelper(p->left, data, next, prev);
if(prev && prev->data == data)
{
next = p;
return;
}
prev = p;

FindInOrderNextInTreeHelper(p->right, data, next, prev);
}
Node * FindInOrderNextInTree(Node *p, int data)
{
if(!p) return NULL;
Node * next = NULL;
Node * prev = NULL;
FindInOrderNextInTreeHelper(p, data, next, prev);
return next;
}

inorder

【在 g*l 的大作中提到】
: 有 parent link比较容易, 要是没有 parent link, 是不是只能用 iterative inorder
: traversal : 找到当前节点, 输出它的下一个?

g*l
发帖数: 385
9
This code is surprisingly simple but seems to work. Is this a classic
question? How did you derive it, hehe?

【在 c******w 的大作中提到】
: Node* nextNode(Node* root, int data)
: {
: Node* result = NULL;
: while(root)
: {
: if( root->value > data )
: {
: result = root;
: root = root -> left;
: }

1 (共1页)
进入JobHunting版参与讨论
相关主题
攒人品,amazon一面经历tree traversal nextNode的无递归无stack实现
判断BT是否BST?reverse linked list 问题, double 和 single 的不同
[合集] 微软面试的一道题大概说一下昨天的Google Phone Interview
Find the node with given value in binary tree in in-orderLC的BST iterator到底要考察什么?
G电面面经:BT的iterator inorder traversal问几个有关Binary tree的题
BST 找重复节点数问一道二叉树遍历的问题? 谢谢!
bst中序遍历c++ class iteratorrecover binary search tree 常数空间
F家phone interview的一道题请教一个BST找Median的题目
相关话题的讨论汇总
话题: node话题: prev话题: data话题: inorder