java中的二叉树排序问题
原创:转载请注明出处
目的:想用java实现二叉树排序算法
思想:利用java中面向对象的思想,即:
Tree:类
树根Tree:root //static所属于每一个Tree
左节点Tree:leftSon
右节点Tree:rightSon
父亲节点Tree:father
上代码 Tree类:
package com.cissst.dom1; /**
* 二叉树
* @author phoebe
*/
public class Tree {
public Integer data;//每一个节点的值
public static Tree root;//根节点(有且仅有一个)
public Tree father;//父节点
public Tree leftSon;//左子节点
public Tree rightSon;//右子节点 //左树是否为空
public boolean hasLeftSon(){
return leftSon!=null;
}
//右树是否为空
public boolean hasRightSon(){
return rightSon!=null;
} //插入节点
public void insert(Integer data,Tree father){
/**
* 思想:先让data和root中的值进行比较,大于0插入右边,小于0插入左边,计划使用递归思想
*/
//等于root.data
if(data.compareTo(father.data)==0){
return;
}
//大于root.data
if(data.compareTo(father.data)>0){
//父节点没有右节点
if(!father.hasRightSon()){
father.rightSon = new Tree();//生成一个右节点
father.rightSon.data=data;//给右节点赋值
father.rightSon.father=father;//指定右节点的父亲是谁
}else{
insert(data,father.rightSon);
}
} //小于同上
if(data.compareTo(father.data)<0){
//父节点没有左节点
if(!father.hasLeftSon()){
father.leftSon = new Tree();//生成一个右节点
father.leftSon.data=data;//给右节点赋值
father.leftSon.father=father;//指定右节点的父亲是谁
}else{
insert(data,father.leftSon);
}
}
} /**
* 总体插入操作
* 1.判断是否有树根,没有的话将数据添加到树根里
* 2.有树根调用insert的重载方法,判断插入到左son还是右son
* @param data
*/
public void insert(Integer data){
if(root==null){
root = new Tree();
root.data=data;
return;
}else{
insert(data,root);
}
} }
测试代码:
package com.cissst.dom1; /**
* 树测试代码
* @author phoebe
*/
public class TreeTest {
public static void main(String[] args) {
TreeTest tt = new TreeTest();
Tree tree = new Tree();
tree.insert(5);
tree.insert(2);
tree.insert(3);
tree.insert(1);
tree.insert(8);
tree.insert(3);
tt.outPutTree(tree.root);
tt.getMinValue(tree.root);
tt.getMaxValue(tree.root);
}
//遍历树中的集合
public void outPutTree(Tree tree){
System.out.print(tree.data+" ");
if(tree.hasLeftSon()){
outPutTree(tree.leftSon);
}
if(tree.hasRightSon()){
outPutTree(tree.rightSon);
}
}
//找出树中最小的值
public void getMinValue(Tree tree){
if(tree.hasLeftSon()){
getMinValue(tree.leftSon);
}else{
System.out.println("最小值"+tree.data);
}
} //找出树中最大的值
public void getMaxValue(Tree tree){
if(tree.hasRightSon()){
getMaxValue(tree.rightSon);
}else{
System.out.println("最大值"+tree.data);
}
} }
java中的二叉树排序问题的更多相关文章
- 面试大总结之二:Java搞定面试中的二叉树题目
package BinaryTreeSummary; import java.util.ArrayList; import java.util.Iterator; import java.util.L ...
- 浅谈在java中list集合的排序问题
定义实体类: public class Person { private Integer id; private String name; private Integer age; public In ...
- java中的集合/容器的数据结构
最近双11在网上买了本 数据结构和算法--java语言实现,正在啃,同时在慕课网上的学习进度来到了集合框架这一类,对于这一块算是刚刚了解,本科的时候数据结构学习的是严蔚敏老师的那本数据结构,代码的实现 ...
- java中的23中设计模式(转)
设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- java中的数据结构(集合|容器)
对java中的数据结构做一个小小的个人总结,虽然还没有到研究透彻jdk源码的地步.首先.java中为何需要集合的出现?什么需求导致.我想对于面向对象来说,对象适用于描述任何事物,所以为了方便对于对象的 ...
- java中的23中设计模式(转载的,有时间一定要熟读)
设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- Java中List Set Map 是否有序等总结
1.Collection List Set Map 区别记忆 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文 ...
- java中treemap和treeset实现(红黑树)
java中treemap和treeset实现(红黑树) TreeMap 的实现就是红黑树数据结构,也就说是一棵自平衡的排序二叉树,这样就可以保证当需要快速检索指定节点. TreeSet 和 Tre ...
- 利用Java实现表达式二叉树
(*^-^*) 什么是二叉树,这里不再介绍,可以自行百度:二叉树.在这里利用java实现“表达式二叉树”. 表达式二叉树的定义 第一步先要搞懂表达式二叉树是个什么东东?举个栗子,表达式:(a+b×(c ...
随机推荐
- backbone 要点知识整理
1.backbone 是个mvc的库,官方文档说它是个库,而不是个框架.库和框架的区别就是,库只是个工具,方便你的项目应用,不会改变你的项目结构,而框架会有一套自己的机制,项目需要遵循框架的设计来实现 ...
- mac上安装mongodb数据库教程
1.官网下载压缩包,并解压到当地任一目录.(我的是Documents/develop/mongodb) 2.在mongodb下新建data文件夹,在data下新建db文件夹.(bin和data文件夹在 ...
- THUSC2016 游记
浑浑噩噩地就出发了,只记得可以翘课,不知道自己要干什么去. Day 0 5点起床,到潮汕机场坐飞机.第一次坐飞机非常不爽起飞和降落时的加速度……终于还是转转地铁.动车在下午4点左右抵达目的地,西 ...
- bzoj:1675 [Usaco2005 Feb]Rigging the Bovine Election 竞选划区
Description It's election time. The farm is partitioned into a 5x5 grid of cow locations, each of wh ...
- jquery实现上下滑动选择
$('.rightShow').on('mousewheel', function(ev) { var dir = ev.originalEvent.wheelDelta if(dir == 120) ...
- webpack运行常见错误归纳
今天在运行项目的时候,又遇到坑了,在公司运行的好好的项目,到我自己电脑上就报错,提示跨域,想了好久都不明白为啥,webpack配置文件里的ip地址我也改成与本地ip对应的,百思不得其解,在寻求别人帮助 ...
- 内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式.
内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式. 一丶IDT解析. 我们知道.IDT表中存放着各种中断信息.比如当我们调用int 3的时候,则会调用IDT表中的第三项来进行调用. 而函数 ...
- Spark学习笔记3(IDEA编写scala代码并打包上传集群运行)
Spark学习笔记3 IDEA编写scala代码并打包上传集群运行 我们在IDEA上的maven项目已经搭建完成了,现在可以写一个简单的spark代码并且打成jar包 上传至集群,来检验一下我们的sp ...
- {style}/index_article.htm {style}表示什么意思啊
LS有点安全意识好不好.... 在你的后台系统设置有个"模板默认风格:________ cfg_df_style " 默认是default也就是 {style}=模板路径+模板默 ...
- phpstudy 虚拟主机域名配置注意问题
第一步:hosts文件中添加对应:127.0.0.1+空格+你的域名 第二部:在D:\phpStudy \Apache\conf\vhosts.conf中禁用470行 第三部:配置域名和引入程序地址