今天做的是LeetCode100,判断两棵二叉树是否相等。
在写完自己的代码之后和大神代码进行比对,发现这个问题的解决手法都是差不多的
一开始想找有没有简便算法
比如先判断结构再判断值
可是发现无论用哪一种都需要递归到最底层,那还不如在递归的时候完成值是否相等的判断
所以得到以下代码:
public class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
return isSameTreeNode(p,q);
}
public boolean isSameTreeNode(TreeNode p, TreeNode q) {
if(p==null&&q==null)
return true;
if(p==null||q==null||(p.val!=q.val))
return false;
else
return isSameTreeNode(p.left, q.left)&&isSameTreeNode(p.right, q.right);
}
}
递归写在一个方法里面也是可以的