判断相同的二叉树
题目:
- 两棵二叉树相同,当且仅当树的结构相同,对应节点的值也相等
解法:
- 深度优先。如果两个二叉树都为空,则两个二叉树相同。如果两个二叉树中有且只有一个为空,则两个二叉树一定不相同。如果两个二叉树都不为空,那么首先判断它们的根节点的值是否相同,若不相同则两个二叉树一定不同,若相同,再分别判断两个二叉树的左子树是否相同以及右子树是否相同。这是一个递归的过程,因此可以使用深度优先搜索,递归地判断两个二叉树是否相同。
class Answer{
public boolean isSameTree(TreeNode p, TreeNode q){
if(p==null&&q==null){//判断是否都为空树
return true;
}else if(p!=null||q!=null){
return false;//其中一个为空树就不相等
}else if(q.val!=p.val){
return false;//判断节点的值
}else{
return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);//递归判断左子树和右子树
}
}
}