侧边栏壁纸
博主头像
GabrielxD

列車は必ず次の駅へ。では舞台は?私たちは?

  • 累计撰写 675 篇文章
  • 累计创建 128 个标签
  • 累计收到 26 条评论

目 录CONTENT

文章目录

【递归, DFS】相同的树

GabrielxD
2022-05-18 / 0 评论 / 0 点赞 / 206 阅读 / 323 字
温馨提示:
本文最后更新于 2022-07-26,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

题目

100. 相同的树


给你两棵二叉树的根节点 pq ,编写一个函数来检验这两棵树是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

示例 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

解题

方法一:递归 DFS

思路

如果两个节点为空返回 ture,如果有一个节点不为空另一个节点为空返回 false,如果两个节点都不为空就判断值是否相等并递归地判断左右子节点分别是否相等。

代码

class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if (p == null && q == null) return true;
        else if (p == null || q == null) return false;
        return p.val == q.val && isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    }
}

一行写法

class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        return p == null ?
            q == null :
            q != null &&
            p.val == q.val &&
            isSameTree(p.left, q.left) &&
            isSameTree(p.right, q.right);
    }
}
0

评论区