难度
题目内容 给你两棵二叉树的根节点
p和q,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
题解
我们想象把一个node,node.left,node.right 的 三点作为一个二叉树单元。然后封装一个函数,来比对它:
function compareUnit(p, q) {
// 当两个节点都为空时它们自然是相等的
if(!p && !q) return true;
// 当它们不都为空时,只要有一个为空,那么它们就是不相等的
if(!p || !q) return false;
// 接下来比对它们的val
if(p.val === q.val) {
// 如果它们的值相等那么递归比较它们的left和right
if(compareUnit(p.left, q.left)) {
return compareUnit(p.right, q.right)
}
// left,right其中一个比对失败就返回false
return false;
} else {
// 不相等直接返回false
return false
}
}
完成这个单元比对函数,我们直接调用它即可。
/**
* @param {TreeNode} p
* @param {TreeNode} q
* @return {boolean}
*/
var isSameTree = function(p, q) {
return compareUnit(p, q)
};