Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、题目描述
100. 相同的树 - 力扣(LeetCode) (leetcode-cn.com)
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例 1:
输入:p = [1,2,3], q = [1,2,3]
输出:true
示例 2:
输入:p = [1,2], q = [1,null,2]
输出:false
示例 3:
输入:p = [1,2,1], q = [1,1,2]
输出:false
提示:
两棵树上的节点数目都在范围 [0, 100] 内 -10^4 <= Node.val <= 10^4
二、思路分析
该题使用递归解答
如果两个树都为空,则两个树相同;
如果一个树为空,一个树不为空,即结构不同,则两个树一定不同;
如果两个树都不为空,即结构相同,则判断它们的值是否相等
如果值不相等,则不相同
如果值相等,则分别递归判断左右子树是否相同
三、AC 代码
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;
} else {
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}
};
四、总结
还算是个简单的递归吧。
范文参考
相同的树 - 相同的树 - 力扣(LeetCode) (leetcode-cn.com)
相同的树 - 相同的树 - 力扣(LeetCode) (leetcode-cn.com)
ACM 选手图解 LeetCode 相同的树(递归 + 非递归)| 编程文青李狗蛋 - 相同的树 - 力扣(LeetCode) (leetcode-cn.com)