请教LEETCODE讲解部分的LCA一道题的变种。。# JobHunting - 待字闺中
u*o
1 楼
题目是找LCA,不是BST,只是BINARY TREE, 有PARENT POINTER, 不用RECURSION
(话说LCA的题变形太多了!!简直目不暇接晕头转向啊)
1337大哥的SOLUTION在这里:
http://leetcode.com/2011/07/lowest-common-ancestor-of-a-binary-
我想问问这个CODE是不是有问题呢?
Node *LCA(Node *root, Node *p, Node *q) {
hash_set visited;
while (p || q) {
if (p) {
if (!visited.insert(p).second)
return p; // insert p failed (p exists in the table)
p = p->parent; @@@@@@@@@@@
}
if (q) {
if (!visited.insert(q).second)
return q; // insert q failed (q exists in the table)
q = q->parent; @@@@@@@@@@@
}
}
return NULL;
}
我想问的就是我加@@@@的那两行后是不是应该加上
visited.insert(p)
还有vistied.insert(q)?因为他一直没有往HASHTABLE加走过的NODE啊,IF CONDITION
什么时候才能成立啊。。鉴于我已经晕了,不知道自己是不是在胡言乱语了。。大家帮
忙给看看呗?谢谢!
(话说LCA的题变形太多了!!简直目不暇接晕头转向啊)
1337大哥的SOLUTION在这里:
http://leetcode.com/2011/07/lowest-common-ancestor-of-a-binary-
我想问问这个CODE是不是有问题呢?
Node *LCA(Node *root, Node *p, Node *q) {
hash_set
while (p || q) {
if (p) {
if (!visited.insert(p).second)
return p; // insert p failed (p exists in the table)
p = p->parent; @@@@@@@@@@@
}
if (q) {
if (!visited.insert(q).second)
return q; // insert q failed (q exists in the table)
q = q->parent; @@@@@@@@@@@
}
}
return NULL;
}
我想问的就是我加@@@@的那两行后是不是应该加上
visited.insert(p)
还有vistied.insert(q)?因为他一直没有往HASHTABLE加走过的NODE啊,IF CONDITION
什么时候才能成立啊。。鉴于我已经晕了,不知道自己是不是在胡言乱语了。。大家帮
忙给看看呗?谢谢!