Java-二叉树算法
二叉树算法的排序规则:
1、选择第一个元素作为根节点
2、之后如果元素大于根节点放在右子树,如果元素小于根节点,则放在左子树
3、最后按照中序遍历的方式进行输出,则可以得到排序的结果(左->根->右)
二叉树算法的核心类,此类只提供了添加和打印输出的方法
package com.lym.binaryTree; /**
* 二叉树算法的排序规则:
* 1、选择第一个元素作为根节点
* 2、之后如果元素大于根节点放在右子树,如果元素小于根节点,则放在左子树
* 3、最后按照中序遍历的方式进行输出,则可以得到排序的结果(左->根->右)
*
* @author Administrator
*
*/
public class BinaryTree { private Node root;// 根节点 // 添加节点,提供外部访问
public void add(int data) {
if (root == null) {
root = new Node(data);
} else {
root.addNode(data);
}
} // 输出节点,提供外部访问
public void print() {
if (root != null) {
root.printNode();
}
} // 树枝节点
class Node {
private Node leftNode;
private Node rightNode;
private int data; public Node(int data) {
this.data = data;
} // 添加节点
public void addNode(int data) {
if (this.data > data) {// 添加在左面
if (this.leftNode == null) {
this.leftNode = new Node(data);
} else {
this.leftNode.addNode(data);
}
} else if (this.data <= data) {
if (this.rightNode == null) {
this.rightNode = new Node(data);
} else {
this.rightNode.addNode(data);
}
}
} // 输出所有节点
//中序遍历
public void printNode() {
if (this.leftNode != null) {
this.leftNode.printNode();
}
System.out.print(this.data + " ");//输出语句放最后就是后续遍历
if (this.rightNode != null) {
this.rightNode.printNode();
}
}
}
}
二叉树的测试类
package com.lym.binaryTree;
/**
* 二叉树测试类
*
* @author Administrator
*
*/
public class BinaryTreeDemo { public static void main(String[] args) {
BinaryTree bt = new BinaryTree();
bt.add(3);
bt.add(5);
bt.add(2);
bt.add(1);
bt.add(4);
bt.add(8);
bt.add(10);
bt.add(13);
bt.add(6);
bt.add(9); bt.print();
} }
Java-二叉树算法的更多相关文章
- Java与算法之(13) - 二叉搜索树
查找是指在一批记录中找出满足指定条件的某一记录的过程,例如在数组{ 8, 4, 12, 2, 6, 10, 14, 1, 3, 5, 7, 9, 11, 13, 15 }中查找数字15,实现代码很简单 ...
- java排序算法(四):冒泡排序
java排序算法(四):冒泡排序 冒泡排序是计算机的一种排序方法,它的时间复杂度是o(n^2),虽然不及堆排序.快速排序o(nlogn,底数为2).但是有两个优点 1.编程复杂度很低.很容易写出代码 ...
- 史上最全的java随机数生成算法分享(转)
这篇文章主要介绍了史上最全的java随机数生成算法,我分享一个最全的随机数的生成算法,最代码的找回密码的随机数就是用的这个方法 String password = RandomUtil.generat ...
- 常用Java排序算法
常用Java排序算法 冒泡排序 .选择排序.快速排序 package com.javaee.corejava; public class DataSort { public DataSort() { ...
- 使用Java练习算法常用的基本操作
一.使用Java练习算法常常需要使用控制台的数据输入和输出,下面记录一下基本的使用方法: 基本用法 import java.util.*; public class Main { public sta ...
- JAVA经典算法40题及解答
JAVA经典算法40题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分 ...
- Java基础算法集50题
最近因为要准备实习,还有一个蓝桥杯的编程比赛,所以准备加强一下算法这块,然后百度了一下java基础算法,看到的都是那50套题,那就花了差不多三个晚自习的时间吧,大体看了一遍,做了其中的27道题,有一些 ...
- Java经典算法四十例编程详解+程序实例
JAVA经典算法40例 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程 ...
- Java排序算法之直接选择排序
Java排序算法之直接选择排序 基本过程:假设一序列为R[0]~R[n-1],第一次用R[0]和R[1]~R[n-1]相比较,若小于R[0],则交换至R[0]位置上.第二次从R[1]~R[n-1]中选 ...
- JAVA经典算法40题
1: JAVA经典算法40题 2: [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3 ...
随机推荐
- canvas练习 - 七巧板绘制
用到的方法: 注意点: stokeStyle等样式要在stroke前边 如果最后只有一个stroke或者fill,那么只填充最后一次路径的,之前的也会画出来但是没有填充看不到.所以每次begin+cl ...
- Linux 安装Ruby详解(在线和离线安装)
很多时候我们会发现,真实的生成环境很多都没有外网,只有内网环境,这个时候我们又需要安装Ruby,则不能提供yum命令进行在线安装了,这个时候我们就需要下载安装包进行离线安装.本文主要简单介绍如果离线安 ...
- Elasticsearch 学习之提升性能小贴士
小贴士1:规划索引.分片 以及集群增长情况 ES使得创建大量索引和超大量分片非常地容易,但更重要的是理解每个索引和分片都是一笔开销.如果拥有太多的索引或分片,单单是管理负荷就会影响到ES集群的性能,潜 ...
- Spring web.xml中的配置
转载博客:http://blog.163.com/zhangke_616/blog/static/191980492007994948206/ 在实际项目中spring的配置文件application ...
- 传真AT指令部分(参考)
不知道下面的命令是不是通用的,如果有尝试过的师兄给我个回复!! 列出了您的MODEM能理解的传真 AT 命令.每个命令描述包括命令名称.解释和相关参数. 传真命令 命令 描述 +F<comman ...
- 【CF884F】Anti-Palindromize 费用流
[CF884F]Anti-Palindromize 题意:定义一个串是反回文的,当且仅当对于1<=i<=len,$a_i!=a_{len-i+1}$. 现在给出一个长度为n的串S(n是偶数 ...
- python unittest框架中doCleanups妙用
偶看unittest官方文档中,发现一个很好用的功能函数doCleanups,看看官方是怎么解释的: doCleanups() This method is called unconditionall ...
- BeanWrapper
BeanWrapper是对Bean的包装,其接口中所定义的功能很简单包括设置获取被包装的对象,获取被包装bean的属性描述器,由于BeanWrapper接口是PropertyAccessor的子接口, ...
- jQuery将时间转化为时间戳或将时间戳转化为时间
下面的这段代码,是可以将时间戳转为时间,或者将时间戳转为时间: <script type="text/javascript"> $.extend({ myTime:{ ...
- Java--static、final、static final的区别
一.final final修饰类:表示该类不能被继承:final类中的方法默认是final的: final修饰方法:表示该方法无法被重写: final修饰方法参数:表示在变量的生存期中它的值不能被改变 ...