码迷,mamicode.com
首页 > 编程语言 > 详细

java: Comparable比较器,定义二叉操作类

时间:2017-06-13 09:57:32      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:dem   arp   public   操作   add   compareto   节点   else   int   

//定义二叉操作类

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比较器,定义二叉操作类

标签:dem   arp   public   操作   add   compareto   节点   else   int   

原文地址:http://www.cnblogs.com/achengmu/p/6999222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!