力扣二叉树篇题

news2024/9/21 16:45:34

题目说明B树如果为空树则不是A树的子结构 

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isSubStructure(TreeNode A, TreeNode B) {
        if(B==null) return false;
        return search(A,B);
    }

    public boolean search(TreeNode A, TreeNode B){
        if(A==null) return false;
//比较该节点的值是否和B根节点相同,如果相同再判断是子树不是相同结构
        if(A.val==B.val&&compare(A,B)){
            return true;
        }
//遍历左子树,遍历右子树
        return search(A.left,B)||search(A.right,B);
    }

    public boolean compare(TreeNode A, TreeNode B){
        if(B==null){
            return true;
        }
        if(A==null){
            return false;
        }
 //判断当前节点相不相等,左右子树相不相等
        return A.val==B.val&&compare(A.left,B.left)&&compare(A.right,B.right);
    }
}

优化之后代码如下:

class Solution {
    public boolean isSubStructure(TreeNode A, TreeNode B) {
        if(A == null || B == null) return false;
        return compare(A, B) || isSubStructure(A.left, B) || isSubStructure(A.right, B);
    }
    public boolean compare(TreeNode A, TreeNode B){
        if(B == null) return true;
        if(A == null) return false;
        return A.val == B.val && compare(A.left, B.left) && compare(A.right, B.right);
    }
}

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/196666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VMware ESXi 7.0 Update 3j 更新发布,修复已知问题

VMware ESXi 7.0 Update 3j Standard & All Custom Image for ESXi 7.0 U3j Install CD 请访问原文链接:https://sysin.org/blog/vmware-esxi-7-u3/,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org 产品简介…

迁移mysql数据库到opengauss

一、安装chameleon工具1.下载源码git clone gitgitee.com:opengauss/openGauss-tools-chameleon.git2.创建Python虚拟环境并激活安装依赖:yum install mysql-devel gcc gcc-devel python-develpython3 -m venv venvsource venv/bin/activate3.进入代码的目录&#x…

CAD转PDF其实很简单,掌握这4种方法就可以

Hello,大家好,这里是建模助手! CAD作为一种绘图格式,在工业设计领域发挥着不可替代的作用,一般有DXF、DWG两种常见的格式,但是一般需要在电脑中安装特定软件才能打开此类格式的文件。 因此大多数人在给别…

网站表单实时通知 销售线索不错漏

对于企业来说,在进行产品发布或营销推广时,都需要大量的信息收集汇总。此时都会用到表单功能,网站上的表单功能应用非常广泛,可做信息收集效果,可做付费预约效果等,而如果希望能实时推送表单收集到的数据&a…

AQS(AbstractQueuedSynchronizer)是什么?

目录简介原理概览资源的共享方式独占(Exclusive)共享(Shared)模板方法模式在AQS中的应用经典应用ReentrantLockSemaphore简介 AQS全称AbstractQueuedSynchronizer,位于java.util.concurrent.locks包下,它是…

Kubernetes (k8s)在企业项目中的重点应用场景以及云原生和云架构的原理

Kubernetes (k8s)在企业项目中的重点应用场景以及云原生和云架构的原理。 Kubernetes,简称 K8s,是用 8 代替中间 8 个字符 “ubernete” 而成的缩写,是一个开源的,用于管理云平台中多个主机上的容器化的应…

Allegro因为DRC报错无法使用走线居中命令的解决办法

Allegro因为DRC报错无法使用走线居中命令的解决办法 在用Allegro做PCB设计的时候,走线居中是非常实用的功能 但是这个功能只能在走线居中不会产生DRC的使用。 如果居中后仍然存在DRC,比如间距,等长等等DRC,如下图: 使用居中命令就会出现报错,如图,因为居中后线距离孔的…

图文详解Linux中的火墙策略优化

目录 前言 一、火墙管理工具切换 二、iptables 的使用 三、火墙默认策略 四、firewalld的使用 1、firewalld的开启 2、关于firewalld的域 3、关于firewalld的设定原理及数据存储 4、firewalld的管理命令 5、firewalld的高级规则 6、firewalld中的NAT 总结 前言 火…

【软件测试】性能测试面试题分析与回答,你的优势不止这些......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 软件测试这一岗已悄…

Java原型模式以及引用拷贝与对象拷贝问题

目录基本数据类型,引用数据类型,String引用拷贝对象拷贝浅拷贝深拷贝原型模式基本数据类型,引用数据类型,String 这里为了更好的理解栈,堆的指向关系,Java传值,传引用问题,我找来一…

全网最详细地介绍mybatis-plus框架

文章目录1. 简介2. 特性3. 支持数据库4. 框架结构5. 开始使用5.1 数据源5.2 初始化工程6. 总结之前使用mybatis框架时,需要写大量的xml配置文件,维护起来比较繁琐。现在使用mybatis-plus,若是简单的curd操作,可以不用写xml文件&am…

maxwell解析mysql的binlog数据并保存到kafka使用

通过maxwell来实现binlog的实时解析,实现数据的实时同步 1、mysql创建一个maxwell用户 为mysql添加一个普通用户maxwell,因为maxwell这个软件默认用户使用的是maxwell这个用户, 进入mysql客户端,然后执行以下命令,进…

IDEA操作git commit后(push项目失败:Access token is expired),撤销commit,恢复到提交前的状态

1. 在IDEA操作push代码报错 remote: [session-e6423190] Oauth: Access token is expired 原因:这个问题其实就是因为你的本地电脑上安全中心存储Gitee密码过期导致的。 解决此问题可以参考以下链接:本以为修改下IDEA的settings下的Gitee账号密码就可以了…

若依框架文档开发手册----开发中常用功能模块

目录 前端 add.html 时间框 大文本框 Ajax校验 自定义校验 回显选中图片 JS对添加下拉列元素 edit.html 下拉列 回显时间 list.html 搜索栏 时间框 mapper.xml Table表格 格式化时间 前端 表格匹配字典值 表格增加.减少功能项 全局 其他 关闭标签页 输入框…

前端使用vue-pdf、pdf-lib、canvas 给PDF文件添加水印,并预览与下载

前端使用vue-pdf、pdf-lib 给pdf添加水印,并预览与下载效果预览使用第三方插件安装依赖插件import 导入依赖预览添加水印的pdf下载添加水印的pdf预览及下载总结完整代码效果预览 使用第三方插件 安装依赖插件 npm i vue-pdf --save npm i pdf-lib --save npm inst…

java之面向对象基础

1.类和对象1.1什么是对象万物皆对象,只要是客观存在的事物都是对象1.2什么是面向对象1.3什么是类类是对现实生活中一类具有共同属性和行为的事物的抽象类的特点:类是对象的数据类型类是具有相同属性和行为的一组对象的集合1.4什么是对象的属性属性&#…

微信小程序——使用npm包,安装 Vant weapp 组件库安装教程及使用vant组件

一.小程序对 npm 的支持与限制目前,小程序中已经支持使用 npm 安装第三方包,从而来提高小程序的开发效率。但是,在小程序中使用 npm 包有如下3个限制:📜不支持依赖于 Node . js 内置库的包📜不支持依赖于浏…

【软件测试】2023年的软件测试咋样?见鬼,我到底该如何进阶?

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 一谈到进阶&#xf…

Sitecore本地安装详细介绍

一、简介 Sitecore 是一种 CMS(内容管理系统,位于 Web 前端和后端办公系统或流程之间的软件系统),本文已当前最新的 10.2.0 版本为例,介绍如何安装部署。 二、环境准备 Sitecore 依赖于 IIS、SQL Server,在后续 Sitecore 安装之前,这两依赖需要提前安装完成 2.1 II…

【CTF】ctf中用到的php伪协议总结及例题(持续更)

目录 前言 关于文件包含漏洞 php伪协议总结 关于php://协议 参考自: 前言 本篇文章使用的靶场是buuctf上的web题目:[BSidesCF 2020]Had a bad day 进行点击选项得到一个这样的url 这里猜测存在sql注入,没测出来。或者可能有php伪协议读…