题目:
给定两颗二叉树的根节点p,q,编写一个函数来检验两个树是否相同。如果两个树的结构相同并且节点具有相同的值,则认为他们是相同的。
示例:略
思路:
这是一道简单的二叉树的问题,首先还是先写条件上的判断,如果两个树都为空,则相同,如果有一个树为空,另一个不为空则不相同,如果节点值再不相同也不是相同的树。
错误代码:
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p==null&&q==null){
return true;
}else if(p==null||q==null){
return false;
}else if(p.val!=q.val){
return false;
}else{
//如果两次递归的结果全是false用==返回值是true
return isSameTree(p.left,q.left)==isSameTree(p.right,q.right);
}
}
}
正确代码:
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p==null&&q==null){
return true;
}else if(p==null||q==null){
return false;
}else if(p.val!=q.val){
return false;
}else{
return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
}
}
}