java比较器(2)

来源:互联网 发布:js代码格式化工具下载 编辑:程序博客网 时间:2024/06/04 19:55

接上一篇文章,实现自己的二叉树

先看一个知识点,以下是可以正常执行的:

Comparable com = null;//声明一个comparable对象com = 30;//通过Integer对Comparable进行实例化System.out.println("内容:" + com);//调用的是toString()方法
二叉树实现test类
package com.compara;import java.util.Arrays;public class ComparableDemo03 {public static void main(String[] args) {BinaryTree bt = new BinaryTree();bt.add(1);bt.add(4);bt.add(3);bt.add(2);bt.add(5);bt.add(6);bt.add(10);bt.add(30);System.out.print("排序之后的结果:");bt.print();}}class BinaryTree{class Node{//声明一个节点类private Comparable data;//保存具体内容private Node left;//保存左子树private Node right;//保存右子树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);//继续向下判断}}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("\t\t" + this.data);if(this.right != null){this.right.printNode();}}};private Node root;//根元素public void add(Comparable data){//加入元素Node newNode = new Node(data);if(root == null){//没有根节点root = newNode;//则以第一个为根节点,第一个即第一次调用add方法是传的data}else{root.addNode(newNode);}}public void print(){this.root.printNode();//通过根节点输出}}