一,问题描述
给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例1:
示例2:
二,代码实现
**思路分析:**这里我们采用递归的思想来解决这个问题,首先我们不仅要判断两颗树对应的结点是在相同的结构位置,我们还要看其对应的值是否相同.
1.所以递归时我们先从根节点判断是否相同,
2.再去判断根的左子树是否相同,同时也要判断根节点的右子树是否相同
代码:
public boolean isSameTree(TreeNode root1, TreeNode root2){
if(root1 == null && root2 == null){ //如果两颗树都为空树就是认为等的
return true;
}
if(root1 == null || root2 == null){ //如果其中一颗树为空,另一颗树不为空,即两棵树不相等
return false;
}
if(root1.val != root2.val){ //如果两棵树的对应根节点值不相同即为不同树
return false;
}
return isSameTree(root1.left,root2.left) && isSameTree(root1.right,root2.right);//递归判断根节点左右子树是否相同
}