java: Comparable比较器,定义二叉操作类
//定义二叉操作类
class BinaryTree{
class Node{
private Node left; //左指数
private Node right; //右指数
private Comparable data;
public Node(Comparable<?> data)
{
this.data = data;
}
//二叉数据比较,大的放在右边,小的放在左边
public void addNode(Node newNode)
{
//放在左边
if( newNode.data.compareTo(this.data) <= 0 )
{
if(this.left==null)
{
this.left = newNode;
}else{
this.left.addNode(newNode); //向下继续判断,指针指向下一个
}
}
System.out.println("this.data="+this.data);
System.out.println("newNode.data="+newNode.data);
System.out.println("----------------->");
//放在右边
if(newNode.data.compareTo(this.data) > 0)
{
if(this.right ==null)
{
this.right = newNode;
}else{
this.right.addNode(newNode); //向下继续判断,指针指向下一个
}
}
}
//中序打印数据
public void printNode()
{
if(this.left != null) //存在左指数
{
this.left.printNode(); //继续查找下面的左指数
}
System.out.println(this.data);
if(this.right != null) //存在右指数
{
this.right.printNode(); //继续查找下面的右指数,指针指向下一个
}
}
}
private Node root;
public void add(Comparable data) //接受数据
{
Node newNode = new Node(data);
if(this.root == null)
{
this.root = newNode; //设为根节点
}else{
this.root.addNode(newNode);
}
}
public void print()
{
//输出全部的根节点数据
this.root.printNode();
}
}
public class comparaDemo3 {
public static void main(String args[])
{
BinaryTree bt = new BinaryTree();
bt.add(3);
bt.add(4);
bt.add(8);
bt.add(1);
bt.add(6);
bt.add(3);
bt.add(18);
bt.print();
}
}
一般不推荐此方法,直接推荐,implements Comparable,实现ComparaTo()方法
java: Comparable比较器,定义二叉操作类的更多相关文章
- Java实现 LeetCode 701 二叉搜索树中的插入操作(遍历树)
701. 二叉搜索树中的插入操作 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树. 返回插入后二叉搜索树的根节点. 保证原始二叉搜索树中不存在新值. 注意,可能存在多种有效的插入 ...
- 纯数据结构Java实现(6/11)(二叉堆&优先队列)
堆其实也是树结构(或者说基于树结构),一般可以用堆实现优先队列. 二叉堆 堆可以用于实现其他高层数据结构,比如优先队列 而要实现一个堆,可以借助二叉树,其实现称为: 二叉堆 (使用二叉树表示的堆). ...
- 剑指Offer面试题27(Java版):二叉搜索树与双向链表
题目:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建新的结点.仅仅能调整树中结点指针的指向. 比方例如以下图中的二叉搜索树.则输出转换之后的排序双向链表为: 在二叉树中,每一 ...
- java Comparable 比较器的使用
/** * */ package com.mindreader; import java.util.Arrays; /** * @作者 Mind reader * @内容 对象数组排序——Compar ...
- java基础(十二)常用类总结(二)
这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...
- java: Comparable比较器,数组对象比较器
Arrays只适合一个数组/对象内的数值进行比较, Comparable比较器(Compara)适合数组,对象,队列等排序, Comparable是一个接口类,实现此接口必须复写:compareTo ...
- Java并发基础10:原子性操作类的使用
在 java5 以后,我们接触到了线程原子性操作,也就是在修改时我们只需要保证它的那个瞬间是安全的即可,经过相应的包装后可以再处理对象的并发修改,本文总结一下Atomic系列的类的使用方法,其中包含: ...
- Java实现 LeetCode 501 二叉搜索树中的众数
501. 二叉搜索树中的众数 给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素). 假定 BST 有如下定义: 结点左子树中所含结点的值小于等于当前结点的值 结点 ...
- Java实现 LeetCode 235 二叉搜索树的最近公共祖先
235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个 ...
随机推荐
- Delphi Pdf的使用方法
此方法安装了llPDFLib.v3.6 控件.对pdf左侧.右侧正文进行了操作. procedure TForm1.Button1Click(Sender: TObject); var node,nd ...
- Navigation
Makedown常用语法 1.常用标题 # 代表h1(一级标题) ## 代表h2(二级标题) ### 代表h3(三级标题) #### 代表h4(四级标题) ##### 代表h5(五级标题) ##### ...
- 插叙LTE
- PHP查看目录下的所有文件
[1].[代码] [PHP]代码 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...
- DBProxy 入门到精通系列(一):DBProxy概述
DBProxy概述 DBProxy是支持分库分表,读写分离的中间件,博客内容除了阅读github官方文档外,还会附加上本人个人测试的结果,但了解一个中间件,需要对这个中间件有一个基本的认识,方便控制. ...
- nodejs开发解决方案
1.2. 统一环境 开发环境 nvm nrm nodejs 0.10.38 node-inspector 部署环境 nvm nrm iojs 2.x pm2 nginx 异步流程控制:Promise是 ...
- shell方式切割tomcat日志
#!/bin/bash while true do cd /usr/local/tomcat/logs d=`date +%Y%m%d` d15=`date -d'15 day ago' +%Y%m% ...
- 剑指offer 面试11题
面试11题: 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4 ...
- 剑指offer 面试14题
面试14题: 题目:剪绳子 题:给你一根长度为n的绳子,请把绳子剪成m段(m,n都是整数,且n>1,m>1),每段绳子的长度记为k[0],k[1],k[2],...,k[m].请问k[0] ...
- PL/SQL不能格式化SQL:--PL/SQL Beautifier could not parse text
PL/SQL sql语句美化器点击没有反应.查看下面提示PL/SQL Beautifier could not parse text.本人此次产生的原因是sql语句语法错误. 工具栏处(如果没有此按钮 ...