经典“相似树”问题,这里注意有节点权值相等。思路很简单,首先判断根节点权值是否相等,然后递归左右子树,直接上代码了。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if (p == null && q == null) {
return true;
} else if (p == null || q==null) {
return false;
}
if (p.val == q.val) {
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
} else {
return false;
}
}
}
提交了三次才Accepted,说说我遇到的问题,
1. 首先判断树为空的条件,两个空树也是相似树!!两个空树也是相似树!!并且注意是两个树同时为空!!一个为空,另一个不为空就是false;
我们可以用笨办法,对四种情形挨个条件语句判断(别问我什么是四个..)
2.习惯性的return 0,LeetCode不接受,说是不支持int类型的boolean,只好乖乖改成false和true;
3.我有一个疑问,先判断p.val == q.val然后else,与先判断p.val !=q.val然后else,两种方法的效率是怎样的差别?
4.我还有一个疑问,每次编辑Blog总记不清楚自己用的是小号字还是正常大小的字,莫怪...
5.再补充一句,这次写的括号有点多...看起来怎么都不自然
5.再补充一句,这次写的括号有点多...看起来怎么都不自然
LOL!
没有评论:
发表评论