侧边栏壁纸
博主头像
GabrielxD

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

  • 累计撰写 471 篇文章
  • 累计创建 108 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

【递归, DFS】相同的树

GabrielxD
2022-05-18 / 0 评论 / 0 点赞 / 35 阅读 / 323 字 / 正在检测是否收录...

题目

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

评论区