我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java另一棵树的子树

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java另一棵树的子树

目录

1.题目描述

2.题解

思路分析

具体实现

完整代码


1.题目描述

给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 

二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。

示例:

输入:root = [3, 4, 5, 1, 2],subRoot = [4, 1, 2]

输出:true

2.题解

思路分析

我们首先判断两棵二叉树是否相同,若相同,则subRoot是root的子树;

若不相同,则判断root的左子树是否与subRoot是否相同,若相同,则subRoot是root的子树;

若不同,判断root的右子树是否与subRoot相同,若相同,subRoot是root的子树;

若不同,继续递归判断...

具体实现

1.首先实现判断两棵二叉树是否相同的代码:

(1)若两棵二叉树都为空,则两颗二叉树相同;若两颗二叉树中只有一棵树为空,则不同

(2)若两棵二叉树都不为空,再判断其根节点的值是否相同,若不相同,两棵二叉树不相同;若相同,再分别判断两颗二叉树的左子树是否相同,右子树是否相同。(通过递归实现)

具体过程:

代码实现:

public boolean isSameTree(TreeNode p, TreeNode q) {    //都为null,相同    if(p == null && q == null){        return true;    }    //只有一个为null,不同    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);}

2.判断subRoot是否为root子树

(1)若subRoot为空,则subRoot为root的子树,返回true

(2)若root为空,则subRoot不为root的子树。返回false

(1)判断subRoot是否与root相同

(2)判断subRoot是否是root的左子树

(3)判断subRoot是否是root的右子树

若都不相同,最后返回false

具体过程:

代码实现:

public boolean isSubtree(TreeNode root, TreeNode subRoot) {    if(subRoot == null){        return true;    }    if(root == null) {        return false;    }    //1、是不是和根节点相同    if(isSameTree(root,subRoot)) {        return true;    }    //2、判断是不是root的左子树    if(isSubtree(root.left,subRoot)) {        return true;    }    //3、右子树    if(isSubtree(root.right,subRoot)) {        return true;    }    //4、返回    return false;}

完整代码

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);    }    public boolean isSubtree(TreeNode root, TreeNode subRoot) {        if(subRoot == null){            return true;        }        if(root == null) {            return false;        }        //1、是不是和根节点相同        if(isSameTree(root,subRoot)) {            return true;        }        //2、判断是不是root的左子树        if(isSubtree(root.left,subRoot)) {            return true;        }        //3、右子树        if(isSubtree(root.right,subRoot)) {            return true;        }        //4、返回        return false;    }}

题目来自:

572. 另一棵树的子树 - 力扣(LeetCode)

来源地址:https://blog.csdn.net/2301_76161469/article/details/133655364

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java另一棵树的子树

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用Python画一棵圣诞树

如何使用Python画一棵圣诞树,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。t.pensize(10) # 修改画笔大小效果图:①这是t.pensize(10)的效果②这是t
2023-06-22

怎么用C语言画一棵圣诞树

下面是一个简单的示例代码,使用C语言绘制一棵圣诞树:#include int main() {int i, j, k;int rows = 10; // 圣诞树的行数for (i = 0; i < rows; i++)
怎么用C语言画一棵圣诞树
2024-03-02

如何用Python实习一棵圣诞树的效果

这篇文章主要介绍了如何用Python实习一棵圣诞树的效果,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。实图:效果如下:Python实现的源代码:from random import randint from time i
2023-06-02

InnoDB一棵B+树可以存放多少行数据?

一个问题? InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。 我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们
InnoDB一棵B+树可以存放多少行数据?
2017-11-19

关于Java的二叉树、红黑树、B+树详解

这篇文章主要介绍了关于Java的二叉树、红黑树、B+树详解,能同时具备数组查找快的优点以及链表插入和删除快的优点的数据结构就是树,需要的朋友可以参考下
2023-05-20

Java 教学例子 目录树 (初级) (转)

Java 教学例子 目录树 (初级) (转)[@more@]供初学者学习转贴请不要删除作者信息 :)/* FileTree.Java*一个目录树的教学程序*Mailto:*@Author">*@Author yifi*@Date 2003/
2023-06-03

C++使用一棵红黑树同时封装出map和set实例代码

红黑树(Red Black Tre)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组,下面这篇文章主要给大家介绍了关于C++使用一棵红黑树同时封装出map和set的相关资料,需要的朋友可以参考下
2023-05-17

java递归查找树的子节点怎么实现

在Java中,使用递归实现查找树的子节点可以通过以下步骤完成:定义树节点类,包含节点值和左右子节点引用。class TreeNode {int value;TreeNode left;TreeNode right;TreeNode(int
2023-10-25

Java中二叉树与N叉树的示例分析

这篇文章主要介绍了Java中二叉树与N叉树的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。题目一 解法/** * Definition for a binary tr
2023-06-29

从全光网到绿色星球,秘密藏在这2000棵树的故事里

这个时代,互联网早已经像水、空气、住房一样,成为了每个人赖以生存的资源。但可能很少有人会深究,为了把网络带到我们的电脑、手机上,需要消耗多少自然资源,又将给我们的星球带来多少排放压力。在公众面前,网络总是以高科技、低污染的形象出现和活跃。但
2023-06-05

Java实现多叉树和二叉树之间的互转

本文主要介绍了Java实现多叉树和二叉树之间的互转,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-19

利用Matlab制作一个贼简单的粒子圣诞树

圣诞节快到了,本文用Matlab绘制了圣诞树祝你们圣诞节快乐,所以下面这篇文章主要给大家介绍了关于如何利用Matlab制作一个贼简单的粒子圣诞树,需要的朋友可以参考下
2022-12-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录