当前位置: 首页 > article >正文

572. 另一棵树的子树

前导题:100. 相同的树

回顾一下
判断两棵二叉树相同,根结点相同 左子树相同 右子树相同。
于是判断如下:

  • 根结点都为null,返回true
  • 根结点不都为null,返回false
  • 根结点都不为null,但是值不相同,返回false
  • 根结点都不为null,且值相同,继续判断左子树和右子树,需要同时相等。
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if (p == null && q == null) return true;
        if (p == null || q == null) return false;
        if (p.val != q.val) return false;
        return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    }
}

一个树 sub 是不是树 root 的子树,那么可以判断 sub 是否和树 root 的任意子树相等。判断条件由 转为

  • 两棵树相等
  • subroot 的左子树
  • subroot 的右子树
class Solution {
    public boolean isSubtree(TreeNode root, TreeNode subRoot) {
        if (root == null && subRoot == null) return true;
        if (root == null || subRoot == null) return false;
        return isSametree(root, subRoot) || isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot);
    }

    public boolean isSametree(TreeNode r, TreeNode s) {
        if (r == null && s == null) return true;
        if (r == null || s == null) return false;
        if (r.val != s.val) return false;
        return isSametree(r.left, s.left) && isSametree(r.right, s.right);
    }
}

http://www.kler.cn/a/526075.html

相关文章:

  • 【学术会议征稿-第二届生成式人工智能与信息安全学术会议(GAIIS 2025)】人工智能与信息安全的魅力
  • 2025 春节联欢晚会魔术揭秘
  • C++:PTA L2-003 月饼
  • vue-有关于TS与路由器
  • 16届蓝桥杯寒假刷题营】第2期DAY5IOI赛
  • 开源 OA 办公系统
  • 1.文件 标准IO库
  • JxBrowser 8.2.2 版本发布啦!
  • momask-codes 部署踩坑笔记
  • 列表(列表是什么)
  • 【Qt】信号和槽简介
  • vue相关的页面和js编写
  • Fork/Join框架_任务分解与并行执行
  • 智慧园区管理平台实现智能整合提升企业运营模式与管理效率
  • 记录一次Sqoop从MySQL导入数据到Hive问题的排查经过
  • 使用Swiper构建运营推荐位
  • 【蓝桥杯省赛真题02】C++猫吃鱼 第十届蓝桥杯青少年创意编程大赛 算法思维 C++编程省赛真题解
  • JAVASE入门十二脚-file,IO流
  • 【DeepSeek-V3】AI Model Evaluation Framework and index schedule AI模型能力评价指标及对比
  • 395. 至少有K个重复字符的最长子串
  • continuous batching、chunked-prefill相关概念
  • springboot3 集成 knife4j(接口文档)
  • 【前端学习路线】前端工程化 详细知识点学习路径(附学习资源)
  • 【 CVE-2025-21298】 通过ghidriff查看完整补丁差异
  • 使用SearchCursor检索要素类中的要素
  • 【深度分析】DeepSeek大模型技术解析:从架构到应用的全面探索