剑指:树的子结构

题目描述
输入两棵二叉树 A、B,判断 B 是不是 A 的子结构。

我们规定空树不是任何树的子结构。

样例

树 A:

 8
 / \
8 7
 / \
9 2
 / \
4 7

树 B:

 8
 / \
9 2

返回 true ,因为 B 是 A 的子结构。

 

解法
递归方式遍历:

  • 在树 A 中找到和树 B 的根结点值一样的结点 R;
  • 判断树 A 以 R 为根结点的子树是否包含与树 B 一样的结构。

 

package demo;public class Solution {//Definition for a binary tree node.public static class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; }}public static boolean hasSubTree(TreeNode pRoot1, TreeNode pRoot2){boolean res = false;if(pRoot1 != null && pRoot2 != null){if(pRoot1.val == pRoot2.val){res = isSame(pRoot1, pRoot2);}if(!res){//res==falseres = hasSubTree(pRoot1.left, pRoot2);}if(!res){res = hasSubTree(pRoot1.right, pRoot2);}}return res;}private static boolean isSame(TreeNode root1, TreeNode root2) {if(root2==null){return true;}if(root1==null || root1.val !=root2.val){return false;}return isSame(root1.left, root2.left) && isSame(root1.right, root2.right);}public static void main(String[] args) {TreeNode R1 = new TreeNode(8);  TreeNode n2 = new TreeNode(8); R1.left = n2;  TreeNode n3 = new TreeNode(7); R1.right = n3;TreeNode n4 = new TreeNode(9); n2.left = n4;TreeNode n5 = new TreeNode(2); n2.right = n5;TreeNode n6 = new TreeNode(4); n5.left = n6;TreeNode n7 = new TreeNode(7); n5.right = n7;TreeNode R2 = new TreeNode(8); TreeNode ns2 = new TreeNode(9); R2.left=ns2;TreeNode ns3 = new TreeNode(2); R2.right=ns3;boolean t = hasSubTree(R1, R2);System.out.println(t);}
}

 

转载于:https://www.cnblogs.com/lisen10/p/11183392.html

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

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

相关文章

[html] 页面的重绘和回流是什么?

[html] 页面的重绘和回流是什么? 由于节点的几何属性发生改变或者由于样式发生改变而不会影响布局的,称为重绘。回流是布局或者几何属性需要改变就称为回流。回流必定会发生重绘,重绘不一定会引发回流。个人简介 我是歌谣,欢迎和…

QT中IDirect3DDevice9的Present方法失败情况的处理笔记

这几天在试着使用QT做编辑器,然后打算使用Irrlicht作为渲染引擎。结果在集成的时候遇到了问题。 使用了Irrlicht论坛里面有人提供的QIrrlichtWidget,结果什么都画不出来。仔细跟踪了一下,结果是IDirect3DDevice9的Present函数返回了E_FAIL。 …

html5图片长按保存,一文彻底解决HTML5页面中长按保存图片功能

$.fn.longPress function(fn) {let timeout 0;const $this this;for (let i 0; i < $this.length; i) {$this[i].addEventListener(touchstart, () > {timeout setTimeout(fn, 800); // 长按时间超过800ms&#xff0c;则执行传入的方法}, false);$this[i].addEventL…

[html] 页面的重绘和回流是什么?

[html] 页面的重绘和回流是什么&#xff1f; 由于节点的几何属性发生改变或者由于样式发生改变而不会影响布局的&#xff0c;称为重绘。回流是布局或者几何属性需要改变就称为回流。回流必定会发生重绘&#xff0c;重绘不一定会引发回流。

(转)深入理解Java中的final关键字

转自&#xff1a;http://www.importnew.com/7553.html Java中的final关键字非常重要&#xff0c;它可以应用于类、方法以及变量。这篇文章中我将带你看看什么是final关键字&#xff1f;将变量&#xff0c;方法和类声明为final代表了什么&#xff1f;使用final的好处是什么&…

jsp servlet中的过滤器Filter配置总结(转)

在Java web开发中常会使用到功能强大的过滤器&#xff0c;他毕竟能给我们带来很大的方便&#xff0c;但是针对过滤的资源我们需要详细的了解他们在web.xml中的配置信息。这个根据几种常用的不同情况进行了总结&#xff1a; 1。如果要映射过滤应用程序中所有资源&#xff1a; &l…

[html] 你最喜欢H5的哪些功能?为什么?

[html] 你最喜欢H5的哪些功能&#xff1f;为什么&#xff1f; 我最喜欢H5中包含的地理定位功能&#xff0c;通过调用geolocation api&#xff0c;用户允许定位后即可获取客户端wgs84坐标信息&#xff1b;相比于某些服务商如IP Geolocation API、百度地图 &#xff08;仅限于国…

关于spring MVC 绑定json字符串与实体类绑定

1 如果前台传json字符串&#xff0c;后台用RequestBody 接收前端"content-Type":"application/json",2 前台用form表单形式提交 后台直接写实体类参数"content-Type":"application/x-www-form-urlencoded",转载于:https://www.cnblog…

fedora下配置ipv6 dns服务器

操作系统&#xff1a;fedora14 DNS版本&#xff1a;dnsmasq2.52 或者 bind9.x dnsmasq2.52是fedora14自带的&#xff0c;所以我选择了这个&#xff0c;而且使用起来也很方便&#xff0c;是一种轻量级的dns server&#xff0c;相对来说bind就比较专业&#xff0c;但是搭建很复杂…

应用计算机网络的方面,计算机网络技术在电子信息工程中的应用研究(1)

杨浩章 叶雨泓 杨鹏进摘要&#xff1a;在科技飞速发展的21世纪&#xff0c;人类文明已经达到了前所未有的阶段。互联网随着新时代也逐渐进入日常生活中。电子信息技术广泛应用于社会生活中&#xff0c;计算机网络技术与电子信息技术的兴起会对社会产生何种影响&#xff0c;两者…

[html] 你觉得新开发一个网站最困难的是哪些部分?

[html] 你觉得新开发一个网站最困难的是哪些部分&#xff1f; 提高网站安全性&#xff0c;比如网站有论坛方面的功能&#xff0c;那需要保证不让黑客通过拦截请求信息&#xff0c;发起对论坛信息的破解。在比如DDOS 攻击个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后…

Abraca:XMMS2 的客户端

Toy Posted in AppsRSSTrackback Abraca 是基于 GTK2 而开辟的 XMMS2 音乐播放器的客户端。今后具有播放列表、音乐经管等功用。需留神的是&#xff0c;此法式要求 XMMS2、GTK 2、libglade、libnotify&#xff08;可选&#xff09;、Python 等。- Download Abraca 0.1版权声明&…

无序字母对

题目描述 给定n个各不相同的无序字母对&#xff08;区分大小写&#xff0c;无序即字母对中的两个字母可以位置颠倒&#xff09;。请构造一个有n1个字母的字符串使得每个字母对都在这个字符串中出现。 输入输出格式 输入格式&#xff1a; 第一行输入一个正整数n。 以下n行每行两…

用计算机打出二分之一,win10手机计算器怎么输入二分之一?

win10系统的电脑方法/步骤首先单击桌面下方的开始菜单&#xff0c;或者按一下win键打开开始菜单的面板。在开始面板里单击所有应用&#xff0c;展开所有的应用。找到计算器并单击鼠标左键打开它。在此处我们如果单击鼠标右键可以选择将计算器固定到“开始”菜单和任务栏&#x…

pandas plot label_数据科学| 手把手教你用 pandas 索引、汇总、处理缺失数据

作者&#xff1a;Paul编者按&#xff1a; pandas提供了很多常用的数学和统计方法&#xff0c;本文中将用十分详细的例子来具体进行介绍&#xff1b;另外在许多数据分析工作中,缺失数据是经常发生的&#xff0c;将会具体介绍如何处理缺失数据。本文十分详细并实在低介绍了pandas…

2011年三八妇女节搜索引擎LOGO设计欣赏

今天是一年一度的三八国际妇女节&#xff0c;在这个特别的日子&#xff0c;烈火学院向所有女性致以节日的祝福&#xff0c;祝愿每位女同胞节日快乐&#xff0c;工作愉快&#xff01;并送上本期的搜索引擎LOGO设计欣赏&#xff0c;希望大家喜欢&#xff01; 一。百度 有作家曾说…

[html] 写html代码时,怎样才加速写代码的速度呢?你有什么方法?

[html] 写html代码时&#xff0c;怎样才加速写代码的速度呢&#xff1f;你有什么方法&#xff1f; 基于之前项目&#xff0c;整理出标准化方案。调研技术方案&#xff0c;提取可复用组件&#xff0c;方法等写代码前整理业务思路流程&#xff0c;先思考&#xff0c;后写码。个人…

Akka-CQRS(16)- gRPC用JWT进行权限管理

前面谈过gRPC的SSL/TLS安全机制&#xff0c;发现设置过程比较复杂&#xff1a;比如证书签名&#xff1a;需要服务端、客户端两头都设置等。想想实际上用JWT会更加便捷&#xff0c;而且更安全和功能强大&#xff0c;因为除JWT的加密签名之外还可以把私密的用户信息放在JWT里加密…

excel转html放在tomcat,Excel转web!把excel在线打开??

如题&#xff1a;把B/S下服务器上的excel&#xff0c;在客户机上用浏览器(web格式)打开&#xff0c;不想用先下载的方式实现。求实现办法&#xff1f;lxbzmy 去看看163 金山在线办公怎么实现的。思路&#xff1a;将excel打开并解析成html格式。你只需要保证足够的兼容性就可以了…

诺基亚2亿欧元建越南新工场

诺基亚昨天颁布发表将会在越南北部河内左近设立扶植一个新的装配厂&#xff0c;方案于2012年尾投入运用&#xff0c;初期投资达到2亿欧元&#xff0c;约合18.3亿人夷易近币。诺基亚目下当今在世界上拥有10个工场&#xff0c;新厂将会进入到诺基亚的举世制造搜集&#xff0c;为他…