算法實現系列第二章.堆排序

說白了就是二叉樹排序..java中hashset中非基本數據類型的對象比較就是用的這個方式...

 

package binarytree;

public class BinaryTree {

	public static void main(String[] args) {
		Node root = null;

		int[] ints = { 123, 1234, 324, 2, 1, 12, 31, 4, 3, 3, 466, 7, 87, 87, 56, 456, 5 };

		root = new Node(ints[0]);
		
		for (int i = 1; i < ints.length; i++) {
			root.add(new Node(ints[i])) ;
		}

		print(root) ;
	}
	
	
	private static void print(Node node){
		if(node.right!=null){
			print(node.right) ;
		}
		System.out.print(node.value+",");
		if(node.left!=null){
			print(node.left) ;
		}
	
	}

	static class Node {

		public Node(int value) {
			this.value = value;
		}

		
		int value;
		Node left;
		Node right;

		/**
		 * 增加一個node
		 * 
		 * @param node
		 */
		public void add(Node node) {
			if (this.value > node.value) {
				if (this.right == null) {
					this.right = node;
				} else {
					this.right.add(node);
				}
			} else {
				if (this.left == null) {
					this.left = node;
				} else {
					this.left.add(node);
				}
			}
		}
	}
}
 其實我感覺不用怎麼解釋..大的放左面.小的放右面..就是遍歷的時候...如果不用遞歸比較複雜..用了遞歸也挺饒人的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章