创建三叉树类Tree,具有前序遍历、后序遍历和层次遍历功能。
用构造TreeData类,具有建树功能。

import java.util.Scanner;class Queue {final int max = 20;//队列的大小Tree[] q = new Tree[max];//创建一个大小为20的队列int f,r;//前与后boolean isEmpty() { return f == r; }//入队列void enQueue(Tree x) { r = (r+1)%max; q[r] = x; }//出队列Tree outQueue() { f = (f+1)%max; return q[f]; }
}public class Tree {//相当于创建一个结构体char data;//数据类型Tree[] child = new Tree[3];//指针域Tree(char x) { data = x; }Tree() {}//前序遍历void pre() {System.out.print(this.data+" ");for (int i=0; i<3; i++)if (this.child[i] != null)this.child[i].pre();}//后序遍历void post() {for (int i=0; i<3; i++)if (this.child[i] != null)this.child[i].post();System.out.print(this.data+" ");}void level() {Tree t = this;Queue q = new Queue();  q.enQueue(t);while(q.isEmpty()==false){t=q.outQueue(); System.out.print(t.data+" ");for (int i=0; i<3; i++)if (t.child[i] != null)q.enQueue(t.child[i]);}}
}class TreeData {int i = 0;String data;TreeData(String d) { data = d;}char getChar() {//专门用于读取数据,每次读一个字符char x = data.charAt(i);i++;return x;}Tree creat() {char x = this.getChar();if(x == '#') return null;Tree t = new Tree();t.data = x;for (int i=0; i<3; i++)t.child[i] = creat();return t;}
}//测试案例
class App {public static void main(String[] x) {System.out.print("请输入建树数据,#表示null:");Scanner sc = new Scanner(System.in);String str = sc.next(); //读取所有的创建链表数据TreeData in = new TreeData(str);Tree t=in.creat();System.out.print("\n前序: ");t.pre();            System.out.print("\n后序: ");t.post();System.out.print("\n层次:    ");t.level();}
}

总结:我之前是学了点C语言,现在学java语言感觉还有点转变不过来,不过还好,加油吧!!!
第一:队列里的声明,开头有点像结构体的声明,接下来是写函数(判断队列是否为空,队列的入队与出队)
第二:对象数组的使用,java里的数组感觉比C语言里的数组要神奇(哈哈)
第三:字符是如何读入的?这里我写了一个getChar()函数,专门用于字符的读入s

如何创建一颗“山楂树”相关推荐

  1. 创建霍夫曼树,霍夫曼编码以及使用霍夫曼编码压缩文件

    那么,什么是霍夫曼树(赫夫曼树)呢? 给定n个权值(权值就是每个节点里面存放的数据,但是根据业务需求不同,存放的数据类型有些差别)作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样 ...

  2. 【编程题目】输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印...

    第 16 题(树): 题目(微软): 输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印. 例如输入 8 / \ 6 10 / \ / \ 5 7 9 11 输出 8 6 1 ...

  3. 输入一颗二元树,从上向下按层打印树的每个节点,同一层中,按照从左到右的顺序打印。...

    输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印,具体实现如下: #include <iostream> using namespace std;typedef ...

  4. 无限极分类php简单,创建无限极分类树型结构的简单方法

    先上效果图 顶级分类其实就是一级分类,二级分类也叫作一级分类的子分类,在这个基础上,子分类还可以拥有子分类,这样就构成了无限极分类. 接下来看具体实现的代码: 一.在控制器中按字段查询,查询出所有分类 ...

  5. 数据结构编程实践(七)创建哈夫曼树、生成哈夫曼编码、完成图片的压缩与解压缩

    一.对图片的压缩与解压缩,涉及以下内容: 1.文件读写 2.创建Huffman树 3.生成Huffman编码 4.压缩图片文件 5 .  解压缩图片文件 二.将项目分成三个小任务,下一任务是在上一任务 ...

  6. 【哈夫曼树】创建哈夫曼树

    文章目录 基础概念: 什么是路径? 什么是路径长度? 什么是[结点]的带权路径长度? 什么是[树]的带权路径长度? 如何构建一棵哈夫曼树? 1.构建森林: 设计哈夫曼树 优先级队列:(priority ...

  7. 山楂树下:温馨提示,您的2019法定节日已过完

    10月1日仿佛还在昨天,令人激动人心的国庆阅兵历历在目,怎么一觉醒来便已经坐在工位上面无表情的敲打键盘?众所周知,国庆之后国内的2019年法定节假日也就结束了,但是没关系呀,最起码三个月后还有元旦不是 ...

  8. 在AD中创建子域和域树

    今天我们接着学习如何在Windows中创建子域和域树 实验环境使用3台虚拟机,一台APTECH.COM域的DC1,一台作为APTECH.COM域的子域的DC2,和另一个域树的DC3 DC1的IP是19 ...

  9. 创建哈夫曼树并求带权路径长度

    创建哈夫曼树并求带权路径长度 [问题描述]根据给定的权重,构造哈夫曼树,输出其带权路径长度. [输入形式]输入权重,空格作为分隔,回车结束,权重个数小于10. [输出形式]哈夫曼树的带权路径长度. [ ...

最新文章

  1. 你的企业在什么情况下需要人工智能?快来看看你需要具备哪些条件与能力吧!...
  2. 绘制分类界面以及性能曲面中的meshgrid函数
  3. TPC-W 一个实验结果和分析
  4. 数据指标有哪些?什么是好的数据指标?
  5. Python学习教程:0基础学Python?手把手教你从变量和赋值语句学
  6. 数字基带传输学习笔记00引言
  7. C#DateTime.ToString格式化时间字符串
  8. Await Async和Thread.waitAll想法?未完待续
  9. FFmpegFrameRecorder保存视频or rtmp发布
  10. NOSQL数据库大比拼:Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase
  11. vivox50支持鸿蒙,vivo X50系列极致轻薄的机身下,还有哪些功能和亮点?
  12. 模型☀️Catia模型到Unity的转化过程
  13. GD32F450替换STM32F429
  14. 自定义Spring Boot项目启动Logo
  15. 贴片电阻功率与尺寸对照表
  16. Android 启动性能、启动性能分析以及常见的启动性能问题分类
  17. Dell PowerEdge RAID控制器存在一个潜在问题
  18. /etc/hosts 详解
  19. bios error 装系统acpi_重装系统遇到bios acpi错误。
  20. 为什么编程是独一无二的职业

热门文章

  1. COGNOS8 Transformer使用IQD做为数据源时报 TR1008 错误
  2. nginx搭建反向代理配置并测试
  3. 图书管理系统之登陆注册页面布局(一)
  4. GEP-vcc虚拟卡介绍以及虚拟卡特点
  5. C语言使用CUDA中cufft函数做GPU加速FFT运算,与调用fftw函数的FFT做运算速度对比
  6. 数据分析--DataFrame(4)
  7. IE浏览器图片不显示,报DOM7009: 无法解码 URL 处的图像问题的解决方法
  8. Fortify SCA C#.NET 扫描方法(Visual Studio插件)
  9. 思考 | 重返研一,你会怎么过?
  10. 【面试】求最大最小的数