题目理解:检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。
考虑递归比较两个根节点值是否相同,如果相同,再判断他们的左子树和右子树是否一致(比较值再比较左右)
递归!递归!
public class Solution {
public boolean isSame(TreeNode a, TreeNode b) {
if (a == null && b == null) {
return true;
}
if (a == null || b == null) {
return false;
}
if (a.val != b.val) {
//这里不能写成a != b, 因为a和b分别是两棵树的根节点,显然不同。
//这里要比较的是a和b的值是否相同,如果数值不同,直接返回false, 如果相同,再看他们的左右子树是否一致
return false;
}
return isSame(a.left, b.left) && isSame(a.right, b.right);
}
}
主要就是不断地比较值-->比较左右的值-->比较值。。。。。