给你两棵二叉树的根节点 p
和 q
,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例 1:
输入:p = [1,2,3], q = [1,2,3] 输出:true
首先考虑根节点,如果根节点相同,然后左子树,右子树
如果从根节点就不同可以直接返回false,或者p和q都为null, 这两种不用考虑剩下的
所以大概框架应该是这样的
function(root)
处理root
考虑p q 的几种情况
if p为空且q为空 满足相同条件 return true
else if p 和 q有一个不为空, return false
else if p 和 q 都不为空 但是值不相等 , return false
function( root.left)
function(root.right)
public boolean isSameTree(TreeNode p, TreeNode q) {
// 都为空
if(p == null && q == null){
return true;
}
//如果有一个不为空,一个为空
else if(p == null || q == null){
return false;
}
//两个都不为空,但是不相等,直接返回false
else if(p.val != q.val)
return false;
else
//两个不为null,但是相等,分别检查左右子树
return isSameTree (p.left,q.left)&&isSameTree (p.right,q.right);
}