/*输入2
567432
543267
576342
输出YES NO 我是没看懂二叉树
* */
import java.util.Scanner;
public class 判断两个序列为同一二叉树 {
public static void judge(String[] s, int n) {
Node head = null;
Node pre = null;
for (int k = 0; k < s[0].length(); k++) {
Node node = new Node(s[0].charAt(k) - '0');
if (head == null) {
head = node;
} else {
pre = head;
while (true) {
if (node.data < pre.data) {
if (pre.l == null) {
pre.l = node;
break;
} else {
pre = pre.l;
}
} else if (node.data == pre.data) {
break;
} else {
if (pre.r == null) {
pre.r = node;
break;
} else {
pre = pre.r;
}
}
}
}
}
for (int i = 1; i <= n; i++) {
int cl = 0, cr = 0;// 记录左右 大于或者小于head的次数,就为左右查找比较的次数
int cll = 0, crr = 0;
int data = 0;
int flag=0;
if ( (s[i].charAt(0) - '0')!= head.data) {
System.out.println("NO");
continue;
}
for (int k = 0; k < s[i].length(); k++) {
data = s[i].charAt(k) - '0';
pre = head;
if (data == head.data) {
continue;
} else if (data < head.data) {
cl++;
} else {
cr++;
}
cll = cl;
crr = cr;
while (true) {
if (data < head.data) {
while (cll >= 0) {
if (data == pre.data) {
break;
} else if (data < pre.data) {
pre = pre.l;
} else {
pre = pre.r;
}
cll--;
}
if (cll < 0) {// NO
flag=1;
}
break;
}
if (data > head.data) {
while (crr >= 0) {
if (data == pre.data) {
break;
} else if (data > pre.data) {
pre = pre.r;
} else {
pre = pre.l;
}
crr--;
}
if (crr < 0) {// NO
flag=1;
}
break;
}
}
}//每一个串比较结束
if(flag==0){
System.out.println("YES");
}else{
System.out.println("NO");
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String s[] = new String[n + 1];
int i = 0;
while (i <= n) {
s[i++] = sc.next();
}
judge(s, n);
}
}
class Node {
int data;
Node l = null;
Node r = null;
Node(int data) {
this.data = data;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
华为机考100例java.rar
共82个文件
txt:82个
需积分: 41 37 下载量 143 浏览量
2020-07-19
15:21:27
上传
评论 2
收藏 69KB RAR 举报
温馨提示
用java语言总结了华为机考100道题,包括递归,堆栈,队列,回溯,数组,字符串,链表,动态规划,DFS算法等,帮助您们顺利通过华为机考。
资源推荐
资源详情
资源评论
收起资源包目录
华为机考100例java.rar (82个子文件)
华为机考100例java
二叉树
二叉树广度和深度.txt 2KB
二叉树遍历.txt 2KB
二叉树遍历非递归.txt 3KB
判断两个二叉树是否为同一个二叉树.txt 4KB
链表
链表合并删除字符串.txt 2KB
链表合并.txt 2KB
判断链表是否有环.txt 1KB
删除倒数第N个元素.txt 2KB
链表翻转.txt 2KB
回文链表判断.txt 1KB
队列
统计单词频率.txt 2KB
最小堆.txt 1009B
统计字符频率按次数高低输出.txt 967B
Hash表
Hash表求字符串出现最少次数的.txt 753B
动态规划
合唱队出列.txt 1KB
含1最大正方形动态规划.txt 945B
最大公共字符串.txt 1KB
走梅庄.txt 978B
字符串相似度.txt 1KB
平安果.txt 1022B
含1最大正方形逻辑推理.txt 1KB
家庭作业.txt 2KB
背包问题.txt 2KB
修改两个字符串.txt 1KB
堆栈
堆栈算括号内矩阵优先级.txt 1KB
字符串找数字然后加减.txt 3KB
匹配括号HashMap.txt 1KB
最全的堆栈算四则运算.txt 2KB
匹配括号.txt 977B
堆栈运算算式.txt 1KB
交换括号内字符.txt 1KB
递归
递归算24点.txt 750B
回溯法24点.txt 1KB
回溯法求组合.txt 1KB
数组的加减运算和为零.txt 952B
凑零钱.txt 1KB
多个数和为谁.txt 1KB
穷举组合方法.txt 3KB
DFS求几个数和为零.txt 1KB
分苹果给小朋友.txt 919B
字母排列组合穷举.txt 2KB
数组
名字和成绩插入排序.txt 1KB
最短时间调度.txt 1KB
报数出列.txt 1KB
线性插值.txt 1KB
走迷宫.txt 919B
数组按照领导座位排序.txt 1KB
矩阵旋转.txt 2KB
IP
IP判断是否合法.txt 1KB
数字和IP之间转换.txt 743B
字符串
人民币.txt 2KB
字符串按照空格和引号分开.txt 1KB
汉语拼音转数字.txt 2KB
Z型输出.txt 1KB
两个很长很长的字符串运算.txt 586B
两个字符串最大公共字符串.txt 1KB
英语单词转化数字.txt 2KB
数字转化为英语单词.txt 2KB
两个字符串最大公共字符串巧妙算法.txt 1KB
字符串数字相加.txt 1KB
一元多项式合并.txt 3KB
字符串后三位排序.txt 1KB
识别数字和负号.txt 1KB
时间相加.txt 1KB
TryCatch.txt 1KB
伟大的阶乘.txt 3KB
字符串加密.txt 1KB
匹配星号和问号.txt 1KB
蛇形矩阵输出.txt 867B
字符串查找和替换.txt 2KB
8除以11分解.txt 1KB
字符串2
夫妻名字匹配度.txt 2KB
字符串中最长的数字字符串.txt 1KB
最大回文字符串长度.txt 1KB
判断if语句.txt 1KB
字符串组合和排序.txt 2KB
字符串第一个出现一次的字符.txt 909B
字符串二进制翻转.txt 3KB
删除子串.txt 1015B
最大递减子序列.txt 925B
删除某系字符串后剩余数字最小.txt 1KB
字符串找数字并判断负号.txt 2KB
共 82 条
- 1
资源评论
zyong19911001
- 粉丝: 3
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功