最近觉得recursion 还是要多多锻炼才行啊。要不然就跪了。
记住先考虑 base case: 对于base case 需要考虑返回null 和null的情况。例如:
isSamTree
public boolean isSameTree(TreeNode p, TreeNode q) {
if (p==null&&q==null) return true;
if (p==null||q==null) return false; 两种情况都要考虑,否则就出错了,成为死循环
boolean left=isSameTree(p.left,q.left);
boolean right=isSameTree(p.right,q.right);
if(left && right && (p.val==q.val)) return true;
else return false;
java函数的值传递的理解:
通过引用来维护object,由于传递是值传递,那么相当于copy了一份引用,我觉得本质就是如果method中有buffer = new object();存在,那么就会只改变新的object的值,而不改变真正的object的值。要解决这个问题:一种方案是利用 数组,传递的时候传递一个只有一个元素的数组来解决问题。例子:http://developer.51cto.com/art/201103/251163.htm