Java-二叉树算法

二叉树算法的排序规则: 

 1、选择第一个元素作为根节点 

 2、之后如果元素大于根节点放在右子树,如果元素小于根节点,则放在左子树

 3、最后按照中序遍历的方式进行输出,则可以得到排序的结果(左->根->右)

二叉树算法的核心类,此类只提供了添加和打印输出的方法

package com.lym.binaryTree;

/**
 * 二叉树算法的排序规则: 
 * 1、选择第一个元素作为根节点 
 * 2、之后如果元素大于根节点放在右子树,如果元素小于根节点,则放在左子树
 * 3、最后按照中序遍历的方式进行输出,则可以得到排序的结果(左->根->右)
 * 
 * @author Administrator
 * 
 */
public class BinaryTree {

	private Node root;// 根节点

	// 添加节点,提供外部访问
	public void add(int data) {
		if (root == null) {
			root = new Node(data);
		} else {
			root.addNode(data);
		}
	}

	// 输出节点,提供外部访问
	public void print() {
		if (root != null) {
			root.printNode();
		}
	}

	// 树枝节点
	class Node {
		private Node leftNode;
		private Node rightNode;
		private int data;

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

		// 添加节点
		public void addNode(int data) {
			if (this.data > data) {// 添加在左面
				if (this.leftNode == null) {
					this.leftNode = new Node(data);
				} else {
					this.leftNode.addNode(data);
				}
			} else if (this.data <= data) {
				if (this.rightNode == null) {
					this.rightNode = new Node(data);
				} else {
					this.rightNode.addNode(data);
				}
			}
		}

		// 输出所有节点
		//中序遍历
		public void printNode() {
			if (this.leftNode != null) {
				this.leftNode.printNode();
			}
			System.out.print(this.data + " ");//输出语句放最后就是后续遍历
			if (this.rightNode != null) {
				this.rightNode.printNode();
			}
		}
	}
}

二叉树的测试类

package com.lym.binaryTree;
/**
 * 二叉树测试类
 * 
 * @author Administrator
 *
 */
public class BinaryTreeDemo {

	public static void main(String[] args) {
		BinaryTree bt = new BinaryTree();
		bt.add(3);
		bt.add(5);
		bt.add(2);
		bt.add(1);
		bt.add(4);
		bt.add(8);
		bt.add(10);
		bt.add(13);
		bt.add(6);
		bt.add(9);
		
		bt.print();
	}

}


posted @ 2015-05-08 21:00  刘彦民  阅读(402)  评论(0编辑  收藏  举报