zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

JAVA 操作 比较 定义 二叉 Comparable
2023-09-14 08:57:51 时间
//定义二叉操作类

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()方法