485 被RFE了# Immigration - 落地生根
w*2
1 楼
题目描述:http://www.lintcode.com/en/problem/lowest-common-ancestor/
我用的是top-down策略,即从root向下扫描,如果两个目标点都在左侧或者右侧,则
root移到左节点或者右节点,继续扫描,直到两个目标节点不在同一侧。
小弟不才,在Lintcode上面提交代码始终无法通过,总是在第八个test时fail。实在想
不出来代码问题在哪儿,跪求版上的大牛们指点!附上代码如下:
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode A, TreeNode B) {
if (A == null) {
return B;
} else if (B == null) {
return A;
}
TreeNode node = root;
while (find(node.left, A) && find(node.left, B)) {
node = node.left;
}
while (find(node.right, A) && find(node.right, B)) {
node = node.right;
}
return node;
}
public boolean find(TreeNode root, TreeNode target) {
if (root == null) {
return false;
}
if (root.val == target.val) {
return true;
}
return find(root.left, target) || find(root.right, target);
}
不胜感激!
我用的是top-down策略,即从root向下扫描,如果两个目标点都在左侧或者右侧,则
root移到左节点或者右节点,继续扫描,直到两个目标节点不在同一侧。
小弟不才,在Lintcode上面提交代码始终无法通过,总是在第八个test时fail。实在想
不出来代码问题在哪儿,跪求版上的大牛们指点!附上代码如下:
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode A, TreeNode B) {
if (A == null) {
return B;
} else if (B == null) {
return A;
}
TreeNode node = root;
while (find(node.left, A) && find(node.left, B)) {
node = node.left;
}
while (find(node.right, A) && find(node.right, B)) {
node = node.right;
}
return node;
}
public boolean find(TreeNode root, TreeNode target) {
if (root == null) {
return false;
}
if (root.val == target.val) {
return true;
}
return find(root.left, target) || find(root.right, target);
}
不胜感激!