java根据前序和中序建树_Java实现根据前序遍历构建二叉树(前序遍历、中序遍历、后序遍历)...

article/2025/9/17 16:44:20

Java实现根据前序遍历构建二叉树(前序遍历、中序遍历、后序遍历),Java关于ACM的代码真的好少,想参考如何用java实现二叉树googl

前言

Java关于ACM的代码真的好少,想参考如何用java实现二叉树google了一上午都没找到资料,只能自己仿照之前写的c代码,实现一遍,,供大家吐槽参考

题目

根据二叉树前序遍历序列例如:7,-7,8,#,#,-3,6,#,9,#,#,#,-5,#,#,构建二叉树,并且用前序、中序、后序进行遍历

代码

import java.util.Scanner;

public class BinaryTree {

public static String[] str;

public static int count;

/**

* 静态内部类,定义二叉树节点

*/

static class TreeNode {

public String data;

TreeNode lchild;

TreeNode rchild;

public TreeNode(String x) {

this.data = x;

}

}

/**

* 根据前序序列递归构建二叉树

*

* @return

*/

public static TreeNode createBtree() {

TreeNode root = null;

if (count >= str.length || str[count++].equals("#")) {

root = null;

} else {

root = new TreeNode(str[count - 1]);

root.lchild = createBtree();

root.rchild = createBtree();

}

return root;

}

/**

* 前序遍历

*

* @param root

*/

public static void preTraverse(TreeNode root) {

if (root != null) {

System.out.print(root.data + " ");

preTraverse(root.lchild);

preTraverse(root.rchild);

}

}

/**

* 中序遍历

*

* @param root

*/

public static void inTraverse(TreeNode root) {

if (root != null) {

inTraverse(root.lchild);

System.out.print(root.data + " ");

inTraverse(root.rchild);

}

}

/**

* 后序遍历

*

* @param root

*/

public static void postTraverse(TreeNode root) {

if (root != null) {

postTraverse(root.lchild);

postTraverse(root.rchild);

System.out.print(root.data + " ");

}

}

public static void main(String args[]) {

Scanner cin = new Scanner(System.in);

while (cin.hasNext()) {

String s = cin.nextLine();

str = s.split(",");

count = 0;

TreeNode root = createBtree();

// 前序遍历

preTraverse(root);

System.out.println();

// 中序遍历

inTraverse(root);

System.out.println();

// 后序遍历

postTraverse(root);

System.out.println();

}

}

}

相关阅读:

二叉树的常见问题及其解决程序

【递归】二叉树的先序建立及遍历

在JAVA中实现的二叉树结构

【非递归】二叉树的建立及遍历

二叉树递归实现与二重指针

logo.gif


http://chatgpt.dhexx.cn/article/uf3CV63g.shtml

相关文章

C实现前序遍历二叉树

1. 实验目的 (1)掌握二叉树的逻辑结构; (2)掌握二叉树的二叉链表存储结构; (3)验证二叉树的二叉链表存储及遍历操作。 2. 实验目的 (1)建立一棵含有n个结…

前序序列创建二叉树

7-9 前序序列创建二叉树 (25 分) 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以二叉链表存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是…

按照前序遍历创建二叉树及树的四种遍历方式

一.二叉树的介绍 二叉树的特点是二叉树的每个结点的度都不大于2,可以视为每个结点都有左孩子和右孩子。故二叉树结点的数据结构为 二.二叉树的特点 1.设根结点所在的层数为第1层,则第i层最多有个结点。 2.深度为k的二叉树最多有个结点。 3.对任何一个二叉…

LeetCode 144. 二叉树的前序遍历(前序遍历)

文章目录 1. 题目信息2. 解题2.1 递归2.2 循环,必须掌握 1. 题目信息 给定一个二叉树,返回它的 前序 遍历。 示例:输入: [1,null,2,3] 1\2/3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗? 来源:力…

589. N 叉树的前序遍历(javascript)589. N-ary Tree Preorder Traversal

给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。 Given the root of an n-ary tree, return the preorder traversal of its n…

python中while用法

python中while用法 例子&#xff1a; a1 while a<10:print(a)a2输出结果&#xff1a; 这段代码的意思是&#xff1a;a的初始值是1&#xff0c;判断条件是&#xff1a;如果a<10&#xff0c;则打印a&#xff0c;之后在返回的a的基础上加2&#xff0c;&#xff0c;如果a&…

while函数用法 matlab,Matlab(七)while循环的使用

Rate this post 在前一节课我们学习了if判断语句&#xff0c;在这篇博客&#xff0c;我们来学习循环语句&#xff1a;while 在此先打出一段简单的while循环代码&#xff1a; x1; while x<4 disp(x); x x1; end 在这段代码中&#xff0c;先声明x 1 当X < 4的时候&#x…

【JAVA】while的用法。

public class While { public static void main(String[] args) {//while 循环语句//不断重复完成某件工作&#xff0c;有明确的结束条件//for do whileint num0;//计数器while(num<10){ if(num%21){ num;continue;}//num为比6大的偶数时&#xff0c;循环结束if(num…

while在Java用法_while和do-while的使用方法

while循环开始后&#xff0c;先判别条件能否满足&#xff0c;假如满足就执行循环体内的语句&#xff0c;执行终了后再回来判别条件能否满足&#xff0c;如此无限反复&#xff1b;直到条件不满足时&#xff0c;执行while循环后边的语句。简单来讲就是说while循环是先判别后循环&…

y-在C语言while语句中的意义,c语言while用法(C语言while用法)

C语言while用法 需要稍作修改 #include main() { 5261int a,b,c,d; double e0.0; //这里e要初始化 a1,b1,c1; //b要从1开始&#xff0c;要不然第一个算4102不上 while(b<100) { ec*1.0/b;//要不然是整数1653除以整数&#xff0c;值是整数&#xff0c;也就是0 bb1; c-c; } pr…

php do while(),php do while用法详解

php do while是一种循环语句&#xff0c;该循环语句保证会执行一次&#xff0c;其使用语法如【<?php $i 0;do {echo $i;} while ($i > 0);?>】&#xff0c;其循环语句将正好运行一次。 推荐&#xff1a;《PHP视频教程》 do-while (PHP 4, PHP 5, PHP 7) do-while 循…

while在c语言中的作用,while的用法_C语言中while的用法

c语言中while的用法 当n==1时执行while循环结构里的语句,当n不等于1时,则跳过该循环执行循环体外的语句。 while 循环的格式:while (表达式){语句;} while 循环的执行顺序:当表达式为真,则执行下面的语句,语句执行完之后再判断表达式是否为真,如果为真,再次执行下面的…

PHP中用while的用法,php while语句的用法

在php中while语句指的是while循环语句&#xff0c;用于重复执行代码块&#xff0c;直到指定的条件不成立&#xff0c;其语法是【while (条件){要执行的代码;}】。 推荐&#xff1a;《PHP视频教程》 php while 循环 while 循环将重复执行代码块&#xff0c;直到指定的条件不成立…

三种循环语句的详解和使用(for,while,do-while)

对于刚接触编程的小可爱们&#xff0c;肯定会碰到这三种循环&#xff0c;书上写的有可能会过于专业化&#xff0c;会让我们感觉很难理解&#xff0c;在这里我就用最简洁明了的表达方式帮你理解并且学会使用这三种循环。 对于大佬们&#xff0c;读完你也许会新体会&#xff0c;新…

IO流(字符流)

IO流&#xff08;字符流&#xff09; 字符流 一.字符流是什么 字符流是可以直接读取字符的IO流字符流读取字符&#xff0c;就要先读去到字节数据&#xff0c;然后转为字符&#xff0c;如果要写出字符&#xff0c;需要把字符转为字节再写出 FileReader FileReader类的read(…

javaIO之字符流

目录 一、简介二、字符流入流1.1FileReader构造方法1.2FileReader读取字符数据 三、字符流出流3.1 FileWriter 构造方法3.2FileWriter写入数据3.3关闭close和刷新flush3.4FileWriter的续写和换行3.5文本文件复制 四、IO异常处理五、小结 一、简介 字符流 Reader 和 Writer 的故…

字符流定义及如何深入理解字符流的编码

IputSrem类和OupuSrem类在读写文件时操作的都是字节&#xff0c;如果希望在程序中操作字符&#xff0c;使用这两个类就不太方便&#xff0c;为此JDK提供了字符流。同字节流样&#xff0c;字符流也有两个抽象的顶级父类&#xff0c;分别是Reader和Writer其中&#xff0c;Reader是…

Java:字符流

字符流的底层其实就是字节流。 字符流字节流字符集 结构体系&#xff1a; 1.特点 输入流:一次读一个字节&#xff0c;遇到中文时&#xff0c;一次读多个字节。 输出流:底层会把数据按照指定的编码方式进行编码&#xff0c;变成字节再写到文件中。 2.使用场景 对于纯文本…

java的字符流

字符流的底层也是字节流。字符流字节流字符集。 特点是输入流一次读一个字节&#xff0c;遇到中文时&#xff0c;一次读多个字节&#xff08;读多少个与字符集有关&#xff09;&#xff1b;输出流底层会把数据按照指定的编码方式进行编码&#xff0c;变成字节再写到文件中。 字…