原创:转载请注明出处

目的:想用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中的二叉树排序问题的更多相关文章

  1. 面试大总结之二:Java搞定面试中的二叉树题目

    package BinaryTreeSummary; import java.util.ArrayList; import java.util.Iterator; import java.util.L ...

  2. 浅谈在java中list集合的排序问题

    定义实体类: public class Person { private Integer id; private String name; private Integer age; public In ...

  3. java中的集合/容器的数据结构

    最近双11在网上买了本 数据结构和算法--java语言实现,正在啃,同时在慕课网上的学习进度来到了集合框架这一类,对于这一块算是刚刚了解,本科的时候数据结构学习的是严蔚敏老师的那本数据结构,代码的实现 ...

  4. java中的23中设计模式(转)

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  5. java中的数据结构(集合|容器)

    对java中的数据结构做一个小小的个人总结,虽然还没有到研究透彻jdk源码的地步.首先.java中为何需要集合的出现?什么需求导致.我想对于面向对象来说,对象适用于描述任何事物,所以为了方便对于对象的 ...

  6. java中的23中设计模式(转载的,有时间一定要熟读)

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  7. Java中List Set Map 是否有序等总结

    1.Collection List Set Map 区别记忆 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文 ...

  8. java中treemap和treeset实现(红黑树)

    java中treemap和treeset实现(红黑树)   TreeMap 的实现就是红黑树数据结构,也就说是一棵自平衡的排序二叉树,这样就可以保证当需要快速检索指定节点. TreeSet 和 Tre ...

  9. 利用Java实现表达式二叉树

    (*^-^*) 什么是二叉树,这里不再介绍,可以自行百度:二叉树.在这里利用java实现“表达式二叉树”. 表达式二叉树的定义 第一步先要搞懂表达式二叉树是个什么东东?举个栗子,表达式:(a+b×(c ...

随机推荐

  1. grid搜索最优参数

    GridSearchCV 详细地址:http://scikit-learn.org/stable/modules/generated/sklearn.grid_search.GridSearchCV. ...

  2. 【批处理学习笔记】第十四课:常用DOS命令(4)

    系统管理at 安排在特定日期和时间运行命令和程序shutdown立即或定时关机或重启taskkill结束进程(WinXPHome版中无该命令)tasklist显示进程列表(Windows XP Hom ...

  3. “玲珑杯”ACM比赛 Round #19题解&源码【A,规律,B,二分,C,牛顿迭代法,D,平衡树,E,概率dp】

    A -- simple math problem Time Limit:2s Memory Limit:128MByte Submissions:1599Solved:270 SAMPLE INPUT ...

  4. 记忆化搜索 dp学习~2

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1331 Function Run Fun Time Limit: 2000/1000 MS (Java/ ...

  5. kali中的webshell

    webacoo -g 生成一句话 -o 输出文件 -r 不混淆代码 -t 连接模式 -u 制定URL 生成一句话 webacoo -g -o a.php 连接一句话 webacoo -t -u htt ...

  6. ico图标在谷歌浏览器中如何显示?

    http://www.zen-cart.cn/forum/topic266117.html 版主: shaning 发表回复 2 篇帖子 • 分页: 1 / 1  ico图标在谷歌浏览器中如何显示? ...

  7. destoon标签

    http://blog.csdn.net/oYuHuaChen/article/details/54601509 ------------

  8. android 基础03 -- Intent

    Android 中的 Intent 是将要执行的操作的一种抽象的描述,是一个用于Android 各个组件之间传递消息的对象. Intent 的基本用法 Intent 基本的使用方法主要有三种: 启动一 ...

  9. IDEA关掉重复代码波浪线

    如图: File----Settings

  10. Java calendar获取月份注意事项

    Calendar中月份month得取值是从0开始,到11,对应着日历中的1-12月.所以在用此取月份的话,需要在原有基础上加1.