【剑指offer】面试题26: 树的子结构(Java)

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

代码:

package offer;
class TreeNode
{
    int val;
    TreeNode left = null;
    TreeNode right = null;
    TreeNode(int val)
    {
        this.val = val;
    }
}
public class ti26 {
    public static boolean HasSon(TreeNode node1,TreeNode node2)
    {
        boolean result = false;
        if(node1!=null&&node2!=null)
        {
            if(node1.val==node2.val)
            {
                result = HasSon2(node1,node2);
            }
            if(!result)
            {
                result = HasSon(node1.left,node2);
            }
            if(!result)
            {
                result = HasSon(node1.right,node2);
            }
        }
        return result;
    }
    public static boolean HasSon2(TreeNode node1,TreeNode node2)
    {
        if(node2==null)
        {
            return true;
        }
        if(node1==null)
        {
            return false;
        }
        if(node1.val!=node2.val)
        {
            return false;
        }
        return HasSon2(node1.left,node2.left)&&HasSon2(node1.right,node2.right);
        
    }
    public static void main(String[] args)
    {
        TreeNode node1 = new TreeNode(8);
        TreeNode node2 = new TreeNode(8);
        TreeNode node3 = new TreeNode(7);
        TreeNode node4 = new TreeNode(9);
        TreeNode node5 = new TreeNode(2);
        TreeNode node6 = new TreeNode(4);
        TreeNode node7 = new TreeNode(7);
        node1.left = node2;
        node1.right = node3;
        node2.left = node4;
        node2.right = node5;
        node5.left = node6;
        node5.right = node7;
        TreeNode node8 = new TreeNode(8);
        TreeNode node9 = new TreeNode(9);
        TreeNode node10 = new TreeNode(2);
        node8.left = node9;
        node8.right = node10;
        System.out.println(HasSon(node1,node8));
    }
}
 

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

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

相关文章

每一个科学家的内心都住着一位哲学家(节选)

来源:腾讯大学(ID: tencent_university)作者:张首晟(斯坦福大学)不少科学家的哲学造诣都很高。在哲学中,有着正负对立的世界观:有阴必有阳、有正必有负、有天使就会有魔鬼。这种哲学观念是如何在…

win10安装RabbitMQ

安装Erlang 去官网下载Erlang的最新版本:https://www.erlang.org/downloads 我这里下载的是OTP 21.0.1 Windows 64-bit Binary File。 下载下来点击一步步进行安装,我的安装位置是D:\Program Files\erl10.0.1 安装好之后, 添加环境变量ERLANG…

总结下载Spring Framework的jar包

总结下载Spring Framework的jar包 下载官网:Spring官网

ros2中gazebo安装的注意事项

Install From source(推荐安装Fortress版本,好像很方便) ROS Be sure youve installed ROS Humble (at least ROS-Base). More ROS dependencies will be installed below. Gazebo Install either Edifice, Fortress, or Garden.(没有har…

谷歌对2021年的六个预测:数据和云技术的革命即将到来

来源:AI前线作者:Debanjan Saha译者:平川策划:钰莹预测是充满挑战的,因为具体的预测取决于特定的时间框。但从云应用方面表现出的趋势来说,我们 2020 年看到的一些事情可能预示着 2021 年可能出现的变化。经…

Vue笔记:webpack项目vue启动流程

VUE启动流程 1. package.json 在执行npm run dev的时候,会在当前目录中寻找 package.json 文件, 有点类似 Maven 的 pom.xml 文件,包含项目的名称版本、项目依赖等相关信息。 { # 版本信息"name": "kitty-ui","version":…

IntelliJ IDEA汉化版jar包

IntelliJ IDEA汉化版jar包 链接:IntelliJIDEA汉化版jar包 提取码:ymdx

哈工大等实现人工肌肉重大突破登上 Science!多国科学家联合实现全新驱动机理...

来源:雷锋网2021 年,机器人已经「成精」了,公然吵架、组团热舞再也不是人类专属。然鹅在很多人心里,机器人还是僵硬、机械甚至冰冷的。即便如此,技术日新月异,柔性机器人快速发展,我们对机器人的…

WOJ 18 动态无向图

一开始我是不会写的,后来点开了题解: 无话可说……那就写吧……然而第一发跑成暴力分,后来加了一个优化:就是在询问里面提到过的边都不用再加了。 然后……然后就过了呀…… 其实还有面向数据的编程的骚操作……既然卡过了那也没什…

Snipaste-2.4-Beta-x64.zip下载

Snipaste-2.4-Beta-x64.zip下载 链接:Snipaste-2.4-Beta-x64.zip下载 提取码:s8lo

AI如何帮助我们理解意识——麻省理工最新大脑研究

来源:ScienceAI编辑:文龙麻省理工学院和麻省总医院的一组研究人员最近发表了一项将社会意识与单个神经元活动联系起来的研究。据悉,这是首次在单神经元级别下找到「心智理论」的证据。测量大量的神经元是神经学的基础。即使是普通的核磁共振成…

CodeForces - 1017D The Wu

题面在这里&#xff01; 比较显而易见的暴力&#xff0c;O(2^(2n) 2^n * 100) 就可以直接做了 #include<bits/stdc.h> #define ll long long using namespace std; const int N4105; #define pb push_backinline int getint(){int x0; char chgetchar();for(;!isdigit(c…

typora-setup-x64.exe下载

typora-setup-x64.exe下载 链接&#xff1a;typora-setup-x64.exe下载 提取码&#xff1a;wiu8

【剑指offer】面试题30:包含min函数的栈

定义栈的数据结构&#xff0c;请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中&#xff0c;调用min、push及pop的时间复杂度都是O(1)。 代码&#xff1a; package offer; import java.util.Stack; class MinInStack { Stack<Integer> stack new St…

计算机操作系统——处理机调度算法

计算机操作系统——处理机调度算法 一、处理机调度的层次和调度算法的目标 1.处理及调度的层次 高级调度&#xff1a;&#xff08;周期较长&#xff0c;大约几分钟一次&#xff09; 又称为长程调度或作业调度 调度对象&#xff1a;作业 功能&#xff1a;根据算法决定将外存中…

宇宙即计算~一种新科学:斯蒂芬·沃尔夫勒姆

编辑 &#xff1a;Gemini来源&#xff1a;人机与认知实验室斯蒂芬沃尔夫勒姆这个名字&#xff0c;在中文世界里可能远谈不上家喻户晓&#xff1b;但他的英文名Stephen Wolfram恐怕反而却要熟悉得多。他是Mathematica软件的发明者和首席设计师&#xff0c;被广泛地认为是当今科学…

2018acm-icpc宁夏邀请赛后记

由于要准备期末考试的缘故&#xff0c;时隔一个月之后我才想起来还有一场比赛没有总结。 大概是出去过的最远的地方了&#xff0c;宁夏理工学院离杭州有两千多千米。 不得不说感到了主办方满满的诚意&#xff0c;虽然是第一次办比赛&#xff0c;但是第一天组织的沙湖旅游&#…

【剑指offer】面试题31:栈的压入,弹出序列

输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序&#xff0c;序列4,5,3,2,1是该压栈序列对应的一个弹出序列&#xff0c;但4,3,5,1,2就不可能…

maven安装与项目创建

maven安装与项目创建 Maven是一个软件项目管理和理解工具。基于项目对象模型的概念&#xff0c;Maven可以管理项目的根据一条中心信息构建、报告和记录。 文件 最新的文件可以在https://maven.apache.org/.找到 系统需求 JDK: 1.7或更高版本(这是为了执行Maven -它仍然允许…

windows 安装zip 压缩

* 到sourceforge上下载 zip-3.0-bin.zip https://sourceforge.net/projects/gnuwin32/files/zip/3.0/zip-3.0-bin.zip/download?use_mirrorjaist 或者http://pan.baidu.com 链接: https://pan.baidu.com/s/1HObxhQUdbsl8J-B-IeeRUg 密码: 9922 * 解压 * 把bin目录下面的exe文件…