接上一篇文章,实现自己的二叉树
先看一个知识点,以下是可以正常执行的:
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();//通过根节点输出
}
}