刷题日记-100. 相同的树

129 阅读1分钟

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)