572. 另一棵树的子树

前导题:100. 相同的树

回顾一下

判断两棵二叉树相同,根结点相同 左子树相同 右子树相同。

于是判断如下:

  • 根结点都为null,返回true
  • 根结点不都为null,返回false
  • 根结点都不为null,但是值不相同,返回false
  • 根结点都不为null,且值相同,继续判断左子树和右子树,需要同时相等。
java 复制代码
/**
 * 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 的右子树
java 复制代码
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);
    }
}
相关推荐
Mcband4 分钟前
IDEA Debug高阶技巧
java·ide·intellij-idea
budingxiaomoli9 分钟前
算法--滑动窗口(一)
数据结构·算法
又是忙碌的一天31 分钟前
java字符串
java·开发语言
王哈哈^_^1 小时前
【数据集】【YOLO】【目标检测】农作物病害数据集 11498 张,病害检测,YOLOv8农作物病虫害识别系统实战训推教程。
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·1024程序员节
xier_ran1 小时前
邻接矩阵的 k 次幂意味着什么?从图论到路径计数的直观解释
算法·图论
沐浴露z1 小时前
Kafka 生产者详解(上):消息发送流程与API,分区,吞吐量与数据可靠性
java·kafka·消息队列
float_com1 小时前
【java面向对象进阶】------抽象类+接口 综合实例
java
B站_计算机毕业设计之家2 小时前
预测算法:股票数据分析预测系统 股票预测 股价预测 Arima预测算法(时间序列预测算法) Flask 框架 大数据(源码)✅
python·算法·机器学习·数据分析·flask·股票·预测
哈哈哈哈~2 小时前
多线程之线程池
java·线程池
洛克大航海2 小时前
7-SpringCloud-服务网关 Gateway-高级特性 Route
java·spring cloud·gateway·route