这个题目很容易想到使用递归的方法去解决,如果两个树它们的值相等,则去递归的判断它们的左子树和右子树,且要同时满足左子树和右子树都相等。当两个根节点都为null是返回true;如果只有一个为null,则返回false;如果两个根节点的值都不相等,直接返回false。代码如下:
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p == null && q == null)
return true;
if(p == null || q == null) {
return false;
}
if(p.val == q.val) {
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}
return false;
}
然后还有一种方法就是使用层次遍历,维持两个队列然后遍历,对弹出的节点进行判断:只有当两者都为null或者都不为null且值相等时,继续判断下一层。