k*******2 发帖数: 84 | 1 以前一直用C++刷题,imagong只能用Java, 我写了一个二叉树的最低公共节点:
下面的程序不对,但是我把第一行改成root.val == p.val || root.val == q.val之后
可以了
难道 "=="在Java里面不是看reference是否相等吗?
请各位不吝赐教,小妹不胜感激 :)
public class Solution{
TreeNode LCA(TreeNode root, TreeNode p, TreeNode q){
if(root == null || root == p || root == q)
return root;
TreeNode left = null;
TreeNode right = null;
left = LCA(root.left, p, q);
right = LCA(root.right, p, q);
if(left != null && right != null)
return root;
if(left != null)
return left;
return right;
}
} |
s*****r 发帖数: 43070 | 2 depend on type,如果是object,比较reference,就是object的地址,如果是
primitive type,就是value。
复杂object的比较,最好override equals() 和 hashcode(),这样比较有档次。 |
k*******2 发帖数: 84 | 3 多谢这位大哥 那具体到这个问题上 我上面给出的代码为啥错了呢?
【在 s*****r 的大作中提到】 : depend on type,如果是object,比较reference,就是object的地址,如果是 : primitive type,就是value。 : 复杂object的比较,最好override equals() 和 hashcode(),这样比较有档次。
|
l*n 发帖数: 529 | 4 你再看看题目,是BST而不是general的二叉树。参数里的p & q用TreeNode就是个摆设
。new一个不是树的节点的node当然不会跟root相等啊。
【在 k*******2 的大作中提到】 : 多谢这位大哥 那具体到这个问题上 我上面给出的代码为啥错了呢?
|
s*****r 发帖数: 43070 | 5 真心没看懂:),多写几个println,自己调试一下,eclipse也是免费的,debug容易
的很。
【在 k*******2 的大作中提到】 : 多谢这位大哥 那具体到这个问题上 我上面给出的代码为啥错了呢?
|
d****n 发帖数: 233 | 6 该成这样就可以了, 当然BST有更快的解法。
public class Solution{
TreeNode LCA(TreeNode root, TreeNode p, TreeNode q){
if(root == null || root.val == p.val || root.val == q.val)
return root;
TreeNode left = LCA(root.left, p, q);
TreeNode right = LCA(root.right, p, q);
if(left != null && right != null)
return root;
return left !=null? left: right;
}
}
【在 s*****r 的大作中提到】 : 真心没看懂:),多写几个println,自己调试一下,eclipse也是免费的,debug容易 : 的很。
|