广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Java另一棵树的子树
  • 398
分享到

Java另一棵树的子树

算法java数据结构 2023-10-12 14:10:32 398人浏览 薄情痞子
摘要

目录 1.题目描述 2.题解 思路分析 具体实现 完整代码 1.题目描述 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回

目录

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

--结束END--

本文标题: Java另一棵树的子树

本文链接: https://www.lsjlt.com/news/429463.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Java另一棵树的子树
    目录 1.题目描述 2.题解 思路分析 具体实现 完整代码 1.题目描述 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回...
    99+
    2023-10-12
    算法 java 数据结构
  • 如何使用Python画一棵圣诞树
    如何使用Python画一棵圣诞树,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。t.pensize(10) # 修改画笔大小效果图:①这是t.pensize(10)的效果②这是t...
    99+
    2023-06-22
  • 如何用Python实习一棵圣诞树的效果
    这篇文章主要介绍了如何用Python实习一棵圣诞树的效果,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。实图:效果如下:Python实现的源代码:from random import rand...
    99+
    2023-06-02
  • InnoDB一棵B+树可以存放多少行数据?
    一个问题? InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。 我们都知道计算机在存储数据的时候,有...
    99+
    2017-11-19
    InnoDB一棵B+树可以存放多少行数据?
  • InnoDB一棵B+树可以存放多少行数据
    InnoDB一棵B+树可以存放多少行数据,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一个问题?InnoDB一棵B+树可以存放多少行数据?...
    99+
    2022-10-19
  • 关于Java的二叉树、红黑树、B+树详解
    目录1、二叉查找树2、平衡二叉查找树3、红黑树:4、 B树:5、 B+树6、红黑树 VS B+树数组和链表是常用的数据结构,数组虽然查找快(有序数组可以通过二分法查找),但是插入和删...
    99+
    2023-05-20
    Java二叉树 Java红黑树 JavaB+树
  • C++使用一棵红黑树同时封装出map和set实例代码
    目录一、封装第一层:仿函数取结点中的key关键码二、封装第二层:红黑树的普通迭代器1.map和set的表层迭代器实现2.底层红黑树中迭代器的实现三、封装第三层:1.set的迭代器(底...
    99+
    2023-05-17
    c++ map 红黑树 红黑树c++实现 c++红黑树
  • Java 教学例子 目录树 (初级) (转)
    Java 教学例子 目录树 (初级) (转)[@more@]供初学者学习转贴请不要删除作者信息 :)import java.io.*;import java.io.File;class FileTree{  public stat...
    99+
    2023-06-03
  • java递归查找树的子节点怎么实现
    在Java中,使用递归实现查找树的子节点可以通过以下步骤完成: 定义树节点类,包含节点值和左右子节点引用。 class Tree...
    99+
    2023-10-25
    java
  • Java C++ 算法题解leetcode652寻找重复子树
    目录题目要求思路一:DFS+序列化JavaC++Rust思路二:DFS+三元组JavaC++Rust总结题目要求 思路一:DFS+序列化 设计一种规则将所有子树序列化,保证不同子...
    99+
    2022-11-13
  • Java中二叉树与N叉树的示例分析
    这篇文章主要介绍了Java中二叉树与N叉树的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。题目一 解法class Solution {&...
    99+
    2023-06-29
  • Java实现赫夫曼树(哈夫曼树)的创建
    目录一、赫夫曼树是什么?1.路径和路径长度2.节点的权和带权路径长度3.树的带权路径长度二、创建赫夫曼树1.图文创建过程2.代码实现一、赫夫曼树是什么? 给定N个权值作为N个叶子结点...
    99+
    2022-11-12
  • 利用Matlab制作一个贼简单的粒子圣诞树
    目录圣诞树主体背景修饰绘制地面水晶球添加雪花并旋转视角完整代码上一期圣诞树有些人说代码太复杂,这期来个贼简单的水晶球里的圣诞树: 这期就是非常简单的三个图形组合: 圣诞树主体 %...
    99+
    2022-12-19
    Matlab粒子圣诞树 Matlab 圣诞树
  • HashMap红黑树入门(实现一个简单的红黑树)
    目录1.树结构入门1.1 什么是树?1.2 树结构常用术语1.3 二叉搜索树2.红黑树原理讲解2.1 红黑树的性质:2.2 红黑树案例分析3.手写红黑树4. HashMap底层的红黑...
    99+
    2022-11-12
  • Java实现多叉树和二叉树之间的互转
    目录前言正文思路分析代码实现总结前言 本文主要介绍如何把一个多叉树转换成二叉树以及把二叉树还原成多叉树。 正文 给出一个多叉树,实现一个函数,这个函数可以把多叉树转成二叉树,再实现一...
    99+
    2023-05-19
    Java 多叉树和二叉树互转 Java 多叉树和二叉树互转
  • 详解Java中字典树(Trie树)的图解与实现
    目录简介工作过程数据结构初始化构建字典树应用匹配有效单词关键词提示总结简介 Trie又称为前缀树或字典树,是一种有序树,它是一种专门用来处理串匹配的数据结构,用来解决一组字符中快速查...
    99+
    2022-11-13
  • 从全光网到绿色星球,秘密藏在这2000棵树的故事里
    这个时代,互联网早已经像水、空气、住房一样,成为了每个人赖以生存的资源。但可能很少有人会深究,为了把网络带到我们的电脑、手机上,需要消耗多少自然资源,又将给我们的星球带来多少排放压力。在公众面前,网络总是以高科技、低污染的形象出现和活跃。但...
    99+
    2023-06-05
  • Java实现红黑树(平衡二叉树)的详细过程
    目录前言红黑二叉查找树2-3树2-3树的插入操作实现红黑二叉树结尾前言 在实现红黑树之前,我们先来了解一下符号表。 符号表的描述借鉴了Algorithms第四版,详情在:https...
    99+
    2022-11-12
  • java 树状数据,递归 从子节点找父节点
    前言:递归算法在项目中也会使用到,简单介绍一下在项目中使用到的场景 补充一个题目 递归方法实现三个要素: 明确递归终止条件; 给出递归终止时的处理办法; 提取重复的逻辑,缩小问题的规模。 场景一:根据树状图的某一节点,查找特定条件的上级节点...
    99+
    2023-08-20
    数据结构 算法
  • 利用Java如何实现一个树算法
    本篇文章为大家展示了利用Java如何实现一个树算法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。为什么使用树:   树结合了两种数据结构的有点:一种是有序数组,树在查找数据项的速...
    99+
    2023-05-31
    java ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作