java二叉树生成器_JAVA实现二叉树生成
给定某二叉树三序遍历中的两个,我们即可以通过生成该二叉树,并遍历的方法,求出剩下的一序,具体代码如下package Tree;
import java.io.BufferedInputStream;
import java.util.*;
public class BT {
class Node{
Node l;//左儿子
Node r;//右儿子
char c;//结点字符
public Node(char c) {
this.c = c;
this.l = null;
this.r = null;
}
}
Node root;
char[] str1,str2;
public BT() {
root = null;
}
public void postOrder(Node n) {
if(n.l!=null) {
postOrder(n.l);
}
if(n.r!=null) {
postOrder(n.r);
}
System.out.print(n.c);
}
public void firstOrder() {
this.firstOrder(this.root);
}
public void firstOrder(Node n) {
System.out.print(n.c);
if(n.l!=null) {
firstOrder(n.l);
}
if(n.r!=null) {
firstOrder(n.r);
}
}
public void postOrder() {
this.postOrder(this.root);
}
public Node build(int s1,int e1,int s2,int e2) {
char c = str1[s1];
Node Root = new Node(c);
int index = 0;
for(int i = s2;i<=e2;i++) {
if(str2[i]==c) {
index = i;
break;
}
}
if(index!=s2) {//如果左子树不为空
Root.l = build(s1+1,s1+index-s2,s2,index-1);
}
if(index!=e2) {//如果右子树不为空
Root.r = build(s1+index-s2+1,e1,index+1,e2);
}
return Root;
}
public Node build1(int s1,int e1,int s2,int e2) {//中后序还原树
char c = str2[e2];
Node Root = new Node(c);
int index = 0;
for(int i = s1;i<=e1;i++) {
if(str1[i]==c) {
index = i;
break;
}
}
if(index!=s1) {
Root.l = build1(s1,index-1,s2,s2+index-s1-1);
}
if(index!=e1) {
Root.r = build1(index+1,e1,s2+index-s1+1,e2-1);
}
return Root;
}
public static void main(String[] args) {
String s1,s2 = null;
Scanner sc = new Scanner(new BufferedInputStream(System.in));
BT bt = new BT();
while(sc.hasNext()) {
s1 = sc.next();
s2 = sc.next();
bt.str1 = new char[s1.length()];
bt.str2 = new char[s1.length()];
bt.str1 = s1.toCharArray();
bt.str2 = s2.toCharArray();
bt.root = bt.build1(0, s1.length()-1, 0, s1.length()-1);
bt.firstOrder();
}
}
}其中build是已知前中序,生成二叉树;build1是已知中后序,生成二叉树.
java二叉树生成器_JAVA实现二叉树生成相关推荐
- java二叉树算法_java构建二叉树算法
展开全部 //********************************************************************************************* ...
- java 二叉树 遍历_JAVA实现二叉树(简易版--实现了二叉树的各种遍历)
1 packagetree;2 3 importjava.util.ArrayDeque;4 importjava.util.ArrayList;5 importjava.util.List;6 im ...
- Java 二叉树 前序_java实现二叉树前序中序后序层次遍历
public class BinarySearhTree { // 属性 private TreeNode root; //根节点 private int size; public void add( ...
- 二叉树初始化_Java实现二叉树
二叉查找树 二叉查找树(Binary Search Tree)也叫排序树或有序树或搜索树,它是为实现快速查找而生.二叉查找树的左子树的节点都小于它的父节点,右子树中的节点都大于它的父节点,因此若按中序 ...
- java 图形校验_java图形验证码生成工具类 web页面校验验证码
java图形验证码生成工具类 web页面校验验证码 发布于 2020-7-14| 复制链接 摘记: 最近做验证码,参考网上案例,发现有不少问题,特意进行了修改和完善.验证码生成器: ```java i ...
- java字符生成器_Java实现简单字符生成器代码例子
创建成功的字符串对象,其长度是固定的,内容是不能被修改和编辑.虽然使用"+"可以达到增加新字符或字符串的目的,但"+"会产生一个新的String实例,会在内存中 ...
- java 密码生成器_Java课程设计-随机密码生成器
1.团队课程设计博客链接 2.个人负责模板 设计程序运行界面,数据的输入,判断数据输入类型的错误,判断密码类型是否选择. 3.自己的代码提交记录截图 4自己负责模块或任务详细说明 (一)总体设计 1. ...
- java 图片生成器_Java实现的图片生成器
一.本图片生成器具有以下功能特性: 1.可以设置图片的宽度.高度.外框颜色.背景色: 2.可以设置图片字体的大小.名称.颜色: 3.可以设置输出图片的格式,如JPEG.GIF等: 4.可以将图片存储到 ...
- java ca认证_java编程方式生成CA证书
下面是java编程方式生成CA证书的代码,使用的是BC的provider.生成CA证书与生成普通证书的区别是:1,生成CA证书时,issuer和subject一致:2,在ContentSigner.b ...
最新文章
- 智能合约开发环境搭建及Hello World合约
- 第10课--10_04_LVM之二
- flink链接mysql_flink 将mysql作为Source和Sink的代码示例
- 基于LBS功能应用的Geohash方案
- MATLAB可视化实战系列(四十二)-图像特征提取-使用低秩 SVD 进行图像压缩实例
- reactjs虚拟DOM与真实DOM
- java中的枚举类_java中的枚举类型
- 低代码开发平台_低代码开发平台系列:6、低代码是编程技术发展大势所趋
- 工程设计论——如何写好工程代码
- win10连接VMWare下的Ubutun系统进行FPT文件传输
- 如何在ASP.NET Core中上传文档
- 以一个通俗易懂的方式解释一下写程序为什么要声明接口和类,面向对象的编程思想,字数不多,主要通过代码理解
- 汇编语言寄存器相关知识(AX/BX/CX/DX+mov/add+物理地址+段+CS/IP+jmp)
- VB模拟按键终极教程
- BMFont把美术图片(汉字,数字,字母)字生成艺术字体fnt格式
- Matlab中求解总体标准差和样本标准差的区别(std函数)
- springboot vue3 elementui plus点餐外卖系统源码
- html网页的说课稿,【必备】说课稿模板集锦六篇
- 手写输入---随手写
- 华为od机试81出租车计费python
热门文章
- linux如何使用uboot的命令,Uboot常用命令使用
- docker安装mysql8,Docker安装Mysql8.0,并配置忽略大小写
- vue中使用js-cookie
- rgb颜色判断语句_如何判断一张照片的曝光是否准确
- oracle为空替换为0_详解Oracle如何用Translate来统计字符出现的次数
- mysql在线搭建从库_Mysql主从库搭建
- layoutSubviews什么时候触发调用
- UE4 PostProcessVolume 蓝图操作后期框
- 我国数据中心产业发展“渐入佳境” 服务是重中之重
- java提高篇之理解java的三大特性——多态