给定某二叉树三序遍历中的两个,我们即可以通过生成该二叉树,并遍历的方法,求出剩下的一序,具体代码如下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实现二叉树生成相关推荐

  1. java二叉树算法_java构建二叉树算法

    展开全部 //********************************************************************************************* ...

  2. java 二叉树 遍历_JAVA实现二叉树(简易版--实现了二叉树的各种遍历)

    1 packagetree;2 3 importjava.util.ArrayDeque;4 importjava.util.ArrayList;5 importjava.util.List;6 im ...

  3. Java 二叉树 前序_java实现二叉树前序中序后序层次遍历

    public class BinarySearhTree { // 属性 private TreeNode root; //根节点 private int size; public void add( ...

  4. 二叉树初始化_Java实现二叉树

    二叉查找树 二叉查找树(Binary Search Tree)也叫排序树或有序树或搜索树,它是为实现快速查找而生.二叉查找树的左子树的节点都小于它的父节点,右子树中的节点都大于它的父节点,因此若按中序 ...

  5. java 图形校验_java图形验证码生成工具类 web页面校验验证码

    java图形验证码生成工具类 web页面校验验证码 发布于 2020-7-14| 复制链接 摘记: 最近做验证码,参考网上案例,发现有不少问题,特意进行了修改和完善.验证码生成器: ```java i ...

  6. java字符生成器_Java实现简单字符生成器代码例子

    创建成功的字符串对象,其长度是固定的,内容是不能被修改和编辑.虽然使用"+"可以达到增加新字符或字符串的目的,但"+"会产生一个新的String实例,会在内存中 ...

  7. java 密码生成器_Java课程设计-随机密码生成器

    1.团队课程设计博客链接 2.个人负责模板 设计程序运行界面,数据的输入,判断数据输入类型的错误,判断密码类型是否选择. 3.自己的代码提交记录截图 4自己负责模块或任务详细说明 (一)总体设计 1. ...

  8. java 图片生成器_Java实现的图片生成器

    一.本图片生成器具有以下功能特性: 1.可以设置图片的宽度.高度.外框颜色.背景色: 2.可以设置图片字体的大小.名称.颜色: 3.可以设置输出图片的格式,如JPEG.GIF等: 4.可以将图片存储到 ...

  9. java ca认证_java编程方式生成CA证书

    下面是java编程方式生成CA证书的代码,使用的是BC的provider.生成CA证书与生成普通证书的区别是:1,生成CA证书时,issuer和subject一致:2,在ContentSigner.b ...

最新文章

  1. 智能合约开发环境搭建及Hello World合约
  2. 第10课--10_04_LVM之二
  3. flink链接mysql_flink 将mysql作为Source和Sink的代码示例
  4. 基于LBS功能应用的Geohash方案
  5. MATLAB可视化实战系列(四十二)-图像特征提取-使用低秩 SVD 进行图像压缩实例
  6. reactjs虚拟DOM与真实DOM
  7. java中的枚举类_java中的枚举类型
  8. 低代码开发平台_低代码开发平台系列:6、低代码是编程技术发展大势所趋
  9. 工程设计论——如何写好工程代码
  10. win10连接VMWare下的Ubutun系统进行FPT文件传输
  11. 如何在ASP.NET Core中上传文档
  12. 以一个通俗易懂的方式解释一下写程序为什么要声明接口和类,面向对象的编程思想,字数不多,主要通过代码理解
  13. 汇编语言寄存器相关知识(AX/BX/CX/DX+mov/add+物理地址+段+CS/IP+jmp)
  14. VB模拟按键终极教程
  15. BMFont把美术图片(汉字,数字,字母)字生成艺术字体fnt格式
  16. Matlab中求解总体标准差和样本标准差的区别(std函数)
  17. springboot vue3 elementui plus点餐外卖系统源码
  18. html网页的说课稿,【必备】说课稿模板集锦六篇
  19. 手写输入---随手写
  20. 华为od机试81出租车计费python

热门文章

  1. linux如何使用uboot的命令,Uboot常用命令使用
  2. docker安装mysql8,Docker安装Mysql8.0,并配置忽略大小写
  3. vue中使用js-cookie
  4. rgb颜色判断语句_如何判断一张照片的曝光是否准确
  5. oracle为空替换为0_详解Oracle如何用Translate来统计字符出现的次数
  6. mysql在线搭建从库_Mysql主从库搭建
  7. layoutSubviews什么时候触发调用
  8. UE4 PostProcessVolume 蓝图操作后期框
  9. 我国数据中心产业发展“渐入佳境” 服务是重中之重
  10. java提高篇之理解java的三大特性——多态