java 里关于二叉树排序的问题

原创
2014/05/10 13:26
阅读数 248

二叉树排序算法的实现

//节点类

public class Node {
	private Node left;
	private Node right;
	private int data;
	public Node(int data){
		this.data=data;
	}
	public void addNode(Node newNode){
		if(newNode.data<this.data){
			if(this.left==null){
				this.left=newNode;
			}else{
				this.left.addNode(newNode);
			}
		}
		if(newNode.data>=this.data){
			if(this.right==null){
				this.right=newNode;
			}else{
				this.right.addNode(newNode);
			}
		}
	}
	public void printNode(){
		if(this.left!=null){
			this.left.printNode();  
		}
		System.out.print(this.data+"\t");
		if(this.right!=null){
			this.right.printNode();
		}
	}
}

//声明一个二叉树

class BinaryTree {
	private Node root;
	public void add(int data){
		Node newNode=new Node(data);
		if(root==null){
			root=newNode;
		}else{
			root.addNode(newNode);
		}
	}
	public void print(){
		this.root.printNode();
	} 
}

//测试二叉树排序TestBinaryTree

public class TestBinaryTree {
	public static void main(String[] args) {
		BinaryTree bt = new BinaryTree();
		bt.add(3);
		bt.add(4);
		bt.add(5);
		bt.add(6);
		bt.add(0);
		bt.add(7);
		bt.add(1);
		bt.add(9);
		bt.add(-3);
		bt.print();
	}
}

结果是

-3	0	1	3	4	5	6	7	9


展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
8 收藏
0
分享
返回顶部
顶部