Given two binary trees, write a function to check if they are equal or not.
Two binary trees are considered equal if they are structurally identical and the nodes have the same value.
public class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
//非循环实现
/*if(p==null && q==null){ //两棵空树
return true;
}
else if(p==null || q==null){ //一棵空树,一棵非空树
return false;
}
else{ //两棵非空树
Stack<TreeNode> s1=new Stack<TreeNode>();
Stack<TreeNode> s2=new Stack<TreeNode>();
s1.push(p);
s2.push(q);
try{
while(s1!=null && s2!=null){
TreeNode ps=s1.pop();
TreeNode qs=s2.pop();
if(ps.val!=qs.val){
return false;
}else{
if(ps.left!=null && qs.left!=null){ //左子树同时不为空
s1.push(ps.left);
s2.push(qs.left);
}else if(ps.left!=null || qs.left!=null){ //左子树不同时为空
return false;
}
if(ps.right!=null && qs.right!=null){ //右子树同时为空
s1.push(ps.right);
s2.push(qs.right);
}else if(ps.right!=null || qs.right!=null){ //右子树不同时为空
return false;
}
}
}
if(s1==null && s2==null){ //两棵树的节点一样多
return true;
}else{
return false;
}
}catch(Exception e){
}
return true;
}*/
//循环实现
if(p==null && q==null){
return true;
}
else if(p==null || q==null){
return false;
}
else{
if(p.val==q.val){
return (isSameTree(p.left,q.left)&& isSameTree(p.right,q.right));
}else{
return false;
}
}
}
}