给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
解答
java
boolean isSameTree(TreeNode p, TreeNode q) {
// p/q 二者其一为null
if ((p == null && q != null) || (p != null && q == null)) {
return false;
}
// p/q二者均为null
if (p == q && p == null) {
return true;
}
// 二者均不为null,且值不相同
if (p.val != q.val) {
return false;
}
// 检查左、右子树
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}
要点
使用递归法解答,比较简单。
检查树节点的对象是否相同时,注意不要犯二。