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);
    }
}
相关推荐
晚晚不晚3 分钟前
后端token校验流程
java
纠结哥_Shrek13 分钟前
AI常见的算法
人工智能·算法
Oracle_66616 分钟前
C语言------数组从入门到精通
c语言·算法·排序算法
南宫生43 分钟前
力扣动态规划-15【算法学习day.109】
java·学习·算法·leetcode·动态规划
ThE.wHIte.44 分钟前
Leetcode 131 分割回文串(纯DFS)
算法·leetcode·职场和发展
xiaoshiguang31 小时前
LeetCode:96.不同的二叉搜索树
java·算法·leetcode·动态规划
hamster20211 小时前
力扣【416. 分割等和子集】详细Java题解(背包问题)
java·算法·leetcode
weixin_422778891 小时前
springboot 简化 spring开发
java·spring boot·spring
feathered-feathered1 小时前
详细解释java当中的所有知识点(前言及数据类型及变量)(第一部分)
java·开发语言·笔记·idea
苹果酱05672 小时前
【MySQL】MySQL客户端连接用 localhost和127.0.0.1的区别
java·spring boot·毕业设计·layui·课程设计