1.题目描述:
给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
eg:
输入: 1 1
/ \ / \
2 3 2 3
[1,2,3], [1,2,3]
输出: true
2.解题思路:
(1)这个代码采用的是递归调用的思想,左右子树分别判断,如果左子树和右子树都判断到null,就是到最后了,那就返回true;
如果是别的情况的话,则返回false
(2)返回false的情况有以下几点:
--》其中有一个结点为空,但并不是两个结点同时为空,这种情况下返回false;
--》如果两个结点的值不相等的话,则要返回false;
(3)最后递归调用isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
3.上代码:
var isSameTree = function(p, q) {
if(p===null && q ===null)
{
return true;
}else if(p===null || q===null)
{
return false;
}else if(p.val!=q.val)
{
return false;
}
//相等
return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
};