给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
输入:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
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 false;
}else 如果两个值相当,则通过递归判断他们的左右子节点是否相同。
return isSameTree(p.left,q.left)&& isSameTree(p.right,q.right);
}
}