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 ...
随机推荐
- Repeater嵌套绑定Repeater以及内层调用外层数据
aspx: <table border=" style="margin-bottom: 5px" width="100%"> <as ...
- python之Tkinter控件学习
转载自 http://www.cnblogs.com/kaituorensheng/p/3287652.html#_label0 阅读目录 1. 产品介绍 2. 设计规划 3. 相关知识 4. 源码 ...
- docker 启动 centos 镜像,容器会自动退出
docker启动centos镜像有两种版本可以解决自动退出的问题: 方式一: docker run -d -it [image-ID] /bin/sh 方式二: 在启动脚本里面增加一个执行进程: 1. ...
- 【CF840D】Destiny 分治(线段树)
[CF840D]Destiny 题意:给你一个长度为n的序列,q次询问,每次指定l r k,求[l,r]中出现次数$>\frac {r-l+1} k$的所有数中最小的那个数. $n,q\le 3 ...
- Power Shell 学习笔记
Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境. 桌面右击任务栏开始图标,打开控制台对话窗: Windows PowerShell ISE 应用程序的文 ...
- Spring Cloud Eureka 配置
实例名配置 在Netflix Eureka的原生实现中,实例名采用主机名作为默认值,这样的设置使得在同一主机上无法启动多个相同的实例,所以在Spring Cloud Eureka的配置中, ...
- Android开发中Chronometer的用法
Chronometer集成自TextView,里面有个Handler负责定时更新ui. 其计时原理很简单:通过setBase(long t)方法设置好baseTime之后,当start()时,每隔一秒 ...
- Django---路由如何配置
具体配置在项目配置文件夹下的 urls.py: from index import views urlpatterns = [ path('admin/', admin.site.urls), pat ...
- Centos6.5安装pip命令以及中途遇到的问题
一.Centos6.5安装pip命令时可能会遇到的问题 1.安装setuptools模块时python安装模块时报异常:Compression requires the (missing) zlib ...
- table中强制不换行
总是一些文章说要强制换行,很少提到说如何不换行. 一般都会使用word-break: keep-all;使得强制不换行. HTML <!DOCTYPE html PUBLIC "-// ...