t1

树的同构

ⅰ亾dé卋堺 提交于 2020-04-01 01:22:16
03-树1 树的同构(25 分) 给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。 图1 图2 现给定两棵树,请你判断它们是否是同构的。 输入格式: 输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数 N ( ≤ 1 0),即该树的结点数(此时假设结点从0到 N − 1编号);随后 N行,第 i行对应编号第 i个结点,给出该结点中存储的1个英文大写字母、其左孩子结点的编号、右孩子结点的编号。如果孩子结点为空,则在相应位置上给出“-”。给出的数据间用一个空格分隔。注意:题目保证每个结点中存储的字母是不同的。 输出格式: 如果两棵树是同构的,输出“Yes”,否则输出“No”。 输入样例1(对应图1): 8 A 1 2 B 3 4 C 5 - D - - E 6 - G 7 - F - - H - - 8 G - 4 B 7 6 F - - A 5 1 H - - C 0 - D - - E 2 - 输出样例1: Yes 输入样例2(对应图2): 8 B 5 7 F - - A 0 3 C 6 - H - - D - - G 4 - E 1 - 8 D 6 - B 5 - E - - H - - C

力扣---2020.3.4

家住魔仙堡 提交于 2020-03-16 15:33:25
994. 腐烂的橘子 class Solution { int [ ] dr = new int [ ] { - 1 , 0 , 1 , 0 } ; int [ ] dc = new int [ ] { 0 , - 1 , 0 , 1 } ; public int orangesRotting ( int [ ] [ ] grid ) { int R = grid . length , C = grid [ 0 ] . length ; // queue : all starting cells with rotten oranges Queue < Integer > queue = new ArrayDeque ( ) ; Map < Integer , Integer > depth = new HashMap ( ) ; for ( int r = 0 ; r < R ; ++ r ) for ( int c = 0 ; c < C ; ++ c ) if ( grid [ r ] [ c ] == 2 ) { int code = r * C + c ; queue . add ( code ) ; depth . put ( code , 0 ) ; } int ans = 0 ; while ( ! queue . isEmpty ( ) ) { int code =

Java多线程(八)——join()

这一生的挚爱 提交于 2020-03-12 04:01:31
一、join()介绍 join() 定义在Thread.java中。 join() 的作用: 让“主线程”等待“子线程”结束之后才能继续运行。 这句话可能有点晦涩,我们还是通过例子去理解: // 主线程 public class Father extends Thread { public void run() { Son s = new Son(); s.start(); s.join(); ... } } // 子线程 public class Son extends Thread { public void run() { ... } } 说明 : 上面的有两个类Father(主线程类)和Son(子线程类)。因为Son是在Father中创建并启动的,所以,Father是主线程类,Son是子线程类。 在Father主线程中,通过new Son()新建“子线程s”。接着通过s.start()启动“子线程s”,并且调用s.join()。 在调用s.join()之后,Father主线程会一直等待,直到“子线程s”运行完毕;在“子线程s”运行完毕之后,Father主线程才能接着运行。 这也就是我们所说的“join()的作用,是让主线程会等待子线程结束之后才能继续运行”! 二、join()源码分析 public final void join() throws

JDK并发包

北城以北 提交于 2020-03-06 10:30:21
1.重入锁(ReentrantLock) 重入锁使用java.util.concurrent.locks.ReentrantLock类来实现,具有与synchronized关键字相似的功能。 1 package com.company; 2 3 import java.util.concurrent.locks.ReentrantLock; 4 5 public class User implements Runnable { 6 private ReentrantLock lock = new ReentrantLock(); 7 static int i = 0; 8 @Override 9 public void run() { 10 lock.lock(); 11 for (int j = 0; j < 10000000; j++) { 12 i++; 13 } 14 System.out.println(i); 15 lock.unlock(); 16 } 17 18 public static void main(String[] args) throws InterruptedException { 19 //注意要使用同一个对象创建线程 20 User u = new User(); 21 Thread t1 = new Thread(u); 22 Thread

python 战斗小游戏

微笑、不失礼 提交于 2020-02-28 05:02:40
仿照武老师写的小游戏class game(): def __init__(self,name,age,sex,fight): self.name=name self.age=age self.sex=sex self.fight=fight def sky(self): self.fight=self.fight-100 def wate(self): self.fight=self.fight-200 def xiulian(self): self.fight=self.fight+150 def detai(self): print ("%s %d %s %d"%(self.name,self.age,self.sex,self.fight))t1=game('docker',20,'man',2000)t2=game('python',30,'woman',2500)t3=game('ansible',25,'shuige',3500)t1.detai()t1.wate()t1.sky()t1.sky()t1.xiulian()t1.detai() 来源: https://www.cnblogs.com/xincai2087/p/5306520.html

技术分享 | 一些 MySQL DBA 实用 SQL 语句

眉间皱痕 提交于 2020-02-26 03:11:24
作者:杜开生 本文目录: 一、连接相关 二、长事务 三、元数据锁 四、锁等待 五、全局读锁 六、内存使用监控 七、分区表 八、数据库信息概览 九、长时间未更新的表 十、主键、索引 十一、存储引擎 十二、实时负载 阅读提示: 1)本篇文章涉及到大量 SQL 语句,在** PC 端阅读 效果更佳。 2)SQL 基于 Oracle MySQL 5.7 版本,其它版本因数据源不同不完全适用。 3)SQL 使用场景包含 会话连接、元数据锁、全局锁、锁等待、长事务、内存监控、分区表、低频更新表、主键、索引、存储引擎、实时负载**属于工具型文章,建议收藏保存以便后续查看。 一、连接相关 查看某用户连接的会话级别参数设置及状态变量,用于观测其它会话连接行为,辅助定位连接类问题 例:查看用户连接 ID 为 19 的字符集设置,也可不指定 PROCESSLIST_ID 条件,查看所有用户连接 SELECT T1.VARIABLE_NAME, T1.VARIABLE_VALUE, T2.PROCESSLIST_ID, concat(T2.PROCESSLIST_USER,"@",T2.PROCESSLIST_HOST), T2.PROCESSLIST_DB, T2.PROCESSLIST_COMMAND FROM PERFORMANCE_SCHEMA.VARIABLES_BY_THREAD T1,

51单片机 串口通信

ε祈祈猫儿з 提交于 2020-02-15 11:13:54
说明 平台:windows 10教育版64位 开发工具:普中科技 HC6800-ES V2.0 、keil uVision2 原理 哔哩哔哩视频教程: 串口通信原理 文档: 普中科技51单片机教程 步骤 1、确定定时器T1的工作方式(TMOD) 这里我们用的是T1定时器的工作方式2,自动重装初值 2、计算T1的初值(TH1,TH2) 计算公式: SMOD = 0波特率正常。SMOD = 1波特率增倍。T1溢出率就是T1定时器溢出一次的时间T的倒数,T1溢出率 = 1/T; 设X为初值,因为8位数据,所以,一次溢出时间 = 【256-X】*12/晶振频率,得出T1的溢出率再运用之前的公式,就可以算出定时器 初值。 这里给出一个常用的表格: 需要注意的是,普中这块开发板用的晶振是12Mhz的,所以选择值的时候要注意,另外因为用的是12Mhz的晶振,不是11.0592Mhz,计算出来的T1定时的初值将不是一个整数,这样进行通信时会产生累计误差。在实践过程中,笔者发现,在4800及以下波特率通信时,因为误差较小,所以产生的影响很小,在通信时没有发生过异常现象,但是高于4800时,则会产生明显误差,通信时传输的数据会严重失真,建议采用4800以下的波特率。 3、启动定时器T1 4、确定串行口工作方式(SCON) 之类可以有两种代码: 一是按位设置,而是整块设置,但其实本质都是按位设置。

设计模式---单例模式

亡梦爱人 提交于 2020-02-15 01:02:15
所谓单例,即使单一的实例,就是要保证对象只有一个。 单例模式:单一的实例,保证类在内存中的只有一个对象。 举例:windows的打印服务,网站计数器 java的应用:Runtime 2.如何保证类在内存中只有一个对象? A:把构造器方法私有,为了不让外界创建对象 B:在类中去创建一个对象 C:通过一个公共的访问方式给外界提供一个入口 单例模式,分饿汉式或懒汉式。 下面请看饿汉式 package cn.itcast_singleton; public class Student { //为了不让外界访问,我们把构造器方法私有 private Student(){}; //创建一个对象 //为了满足静态方法访问,这里必须加一个静态修饰符 //为了不让外界修改s对象,加私有修饰 private static Student s=new Student(); //提供一个公共的访问方式 //为了让外界直接访问,我们就给方法添加一个静态修饰符 public static Student getStudent(){ return s; } public void show(){ System.out.println("i love java"); } } package cn.itcast_singleton; public class StudentTest { public static

Java包装类

戏子无情 提交于 2020-02-08 18:39:46
Java数据类型 包装类 Java API 基本数据类型和包装类的转换 自动装箱 int t1 = 2 ; Integer t2 = t1 ; 手动装箱 Integer t3 = new Integer ( t1 ) ; 自动拆箱 int t4 = t2 ; 手动拆箱 int t5 = t2 . intValue ( ) ; 基本数据类型和字符串的转换 Integer.toString() 基本数据类型转字符串 int t1 = 2 ; String t2 = Integer . toString ( t1 ) ; Integer.parseInt() 字符串转基本数据类型 String t2 = "2" ; int t3 = Integer . parseInt ( t2 ) ; Integer.valueOf() 先将String对象转换成integer对象,Integer对象自动转换成int String t2 = "2" ; int t4 = Integer . valueOf ( t2 ) ; 基本数字类型的初始值 数据类型 默认值 byte 0 short 0 int 0 long 0L double 0.0d char ‘\u0000’ boolean false 几个知识点 当-128<数字<127 Integer t= 100;虚拟机会从缓存区取对象

SQL查询强化训练(1)

自作多情 提交于 2020-02-08 01:45:58
1 SELECT T1.C#, 2 3 ROUND(T1.AVG_SCORE, 2) AVG_SCORE, 4 5 ROUND(T2.PASS_COUNT / T1.ALL_COUNT, 2) PASS_POINT 6 7 FROM (SELECT DISTINCT C#, 8 9 COUNT(1) OVER(PARTITION BY C# ORDER BY C#) ALL_COUNT, 10 11 AVG(SCORE) OVER(PARTITION BY C# ORDER BY C#) AVG_SCORE 12 13 FROM SC) T1, 14 15 (SELECT DISTINCT C#, 16 17 COUNT(1) OVER(PARTITION BY C# ORDER BY C#) PASS_COUNT 18 19 FROM SC 20 21 WHERE SCORE >= 60) T2 22 23 WHERE T1.C# = T2.C# 24 25 ORDER BY AVG_SCORE, PASS_POINT DESC Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;   Union All,对两个结果集进行并集操作,包括重复行,不进行排序;   Intersect,对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;