java比较器(2)

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

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

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();//通过根节点输出
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值