首页 > 其他分享 >每日一练(剑指offer)树的子结构

每日一练(剑指offer)树的子结构

时间:2023-03-14 23:31:42浏览次数:42  
标签:TreeNode val offer 每日 子结构 null root1 root2

描述

输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构)

假如给定A为{8,8,7,9,2,#,#,#,#,4,7},B为{8,9,2},2个树的结构如下,可以看出B是A的子结构

每日一练(剑指offer)树的子结构_子结构

示例

输入:

{8,8,7,9,2,#,#,#,#,4,7},{8,9,2}

返回值:

true

示例

/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;

public TreeNode(int val) {
this.val = val;

}

}
*/
public class Solution {
//判断树结构是否相同
public boolean isSame(TreeNode root1, TreeNode root2) {
//如果root2为空,则为true(不需要考虑root1的状况)
if (root2 == null) return true;
if (root1 == null) return false;
//判断首节点的值,然后root1与root2的左子树,然后root1与root2的右子树
return root1.val == root2.val && isSame(root1.left, root2.left) &&
isSame(root1.right, root2.right);
}

//方法一:递归的方式(利用深度优先遍历的思想)
public boolean HasSubtree(TreeNode root1, TreeNode root2) {
//判断root1和root2是否为null(空树不是任意一个树的子结构)
if (root1 == null || root2 == null) return false;
//如果首结点不相等,则依次比较左子树、右子树与root2的关系
return isSame(root1, root2) || HasSubtree(root1.left, root2) ||
HasSubtree(root1.right, root2);
}
}

标签:TreeNode,val,offer,每日,子结构,null,root1,root2
From: https://blog.51cto.com/u_15501985/6121192

相关文章

  • 每日总结2023/3/14
    今天完成了作业的前两个查询,完成了线路查询,站点查询下面是演示    代码如下 <%@pagelanguage="java"contentType="text/html;charset=UTF-8"p......
  • 每日总结--2023/3/14
    今日课程:英语数据库 python学习内容:复习了android的基础知识完善了登录和注册页面学习了更多的sql语句学习了python循环组队任务完......
  • 2023.3.14周二每日博客
    今天学习了表的构建,逐渐理解了如何去存储地铁信息,相关的函数留到明天去书写 地铁线路查询和站点查询之类相对简单已经初步完成, 接下来进行更深一步的学习 ......
  • 3.14,每日总结
    今天做了几道python习题,完成了android系统第二阶段的开发   总结查询 自动统计 ......
  • 浙江理工大学每日一题3.14
    点击查看代码#pragmaGCCoptimize(1)#pragmaGCCoptimize(2)#pragmaGCCoptimize(3,"Ofast","inline")#include<bits/stdc++.h>typedeflonglongll;using......
  • 用GO剑指 Offer 05. 替换空格
    请实现一个函数,把字符串s中的每个空格替换成"%20"。 示例1:输入:s="Wearehappy."输出:"We%20are%20happy." 限制:0<=s的长度<=10000来源:力扣(LeetCode)链接:h......
  • 剑指 Offer 58 - II. 左旋转字符串
    字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位......
  • 提醒工具的进阶玩法来了,如何利用提醒功能实现每日目标?
    相信很多人都有过这样的经历,为了完成某个重要的任务,列出了详细的计划和步骤,但是在执行的过程中,总是因为这样或那样的原因导致忘记或拖延,最终无法按时完成既定的目标。那么......
  • 剑指 Offer 68 - II. 二叉树的最近公共祖先(java解题)
    (剑指Offer68-II.二叉树的最近公共祖先(java解题))1.题目给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T......
  • 3.13每日总结——地铁查询系统1.0(第一次合作)
           思路首先是数据库存储:(1)采用List集合来存储线路上的站点信息。public static List lines = new ArrayList<>();(2)采用List集合来存储相邻站点信......