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 ...
随机推荐
- 【数据库系列】MySql中的select的锁表范围
由于InnoDB预设的是Row-Level Lock,只有明确指定主键的时候MySql才会执行Row lock,否则MySql将会执行Table Lock. 1.明确指定主键则是行锁 2.明确指定主键 ...
- win7系统自带分区工具,能分出逻辑分区
先把硬盘里除了你装系统的主分区以外的分区全删除运行CMD输入 DISKPART然后输入list disk,找到你要分的盘,假如是要分第1个硬盘的就输入:select disk 0 这样就选择了第一个硬 ...
- C# .ToString()格式化 常用数据转化小总结
1.百分比 ; ; string p = ((double)i / j).ToString("P");//结果:200.00% p = string.Format("{0 ...
- csdn博客刷点击率(java代码)
此文为转载,亲测有效. import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; impo ...
- iOS - 沙盒机制(SandBox)和获取沙盒路径
iOSAPP可以在自己的沙盒里读写文件,但是,不可以访问其他APP的沙盒.每一个APP都是一个信息孤岛,相互是不可以进行通信的,唯独可以通过URLScheme.沙盒里面的文件可以是照片.声音文件.文本 ...
- Spark2 Linear Regression线性回归
回归正则化方法(Lasso,Ridge和ElasticNet)在高维和数据集变量之间多重共线性情况下运行良好. 数学上,ElasticNet被定义为L1和L2正则化项的凸组合: 通过适当设置α,Ela ...
- 转基于概率的矩阵分解原理详解(PMF)
上一篇博客讲到了推荐系统中常用的矩阵分解方法,RegularizedMF是对BasicMF的优化,而PMF是在RegularizedMF的基础上,引入概率模型进一步优化.假设用户U和项目V的特征矩阵均 ...
- HUSTM 1601 - Shepherd
题目描述 Hehe keeps a flock of sheep, numbered from 1 to n and each with a weight wi. To keep the sheep ...
- 微软、谷歌、亚马逊、Facebook等硅谷大厂91个开源软件盘点(附下载地址)
开源软件中有大量专家构建的代码,大大节省了开发人员的时间和成本,热衷于开源的大厂们总是能够带给我们新的惊喜.2016年9月GitHub报告显示,GitHub已经有超过 520 万的用户和超 30 万的 ...
- an upstream response is buffered to a temporary file
an upstream response is buffered to a temporary file