`

用java写二叉树算法,实现添加数据形成二叉树功能,并打印

阅读更多
public class MyTest {
	private myTree tree;

	/**     
	 *二叉树的插入,参数为(关键字,数据)     
	 *     
	 **/
	public void insert(int key, int data) {
		if (tree == null) {
			tree = new myTree();
			tree.key = key;
			tree.data = data;
		} else {
			myTree newTree = new myTree();
			newTree.key = key;
			newTree.data = data;
			myTree parent = tree;
			while (true) {
			if (newTree.key < parent.key) {
				if (parent.leftChild == null) {
				parent.leftChild = newTree;
						return;
					} else {
				parent = parent.leftChild;
					}
		             } else if (newTree.key > parent.key) {
				if (parent.rightChild == null){			parent.rightChild = newTree;
		                     return;
			} else {
			parent = parent.rightChild;
					}
				}
			}

		}
	}

	/**     
	 *   二叉树的查找,参数为(关键字),返回值为   myTree的一个实例     
	 *       
	 *   **/
	public myTree find(int key) {
		if (tree == null)
			return null;
		myTree curr = new myTree();
		curr.key = key;
		myTree parent = tree;
		while (true) {
			if (parent == null) {
				return null;
			} else if (curr.key == parent.key) {
				return parent;
			} else if (curr.key > parent.key) {
				parent = parent.rightChild;
			} else if (curr.key < parent.key) {
				parent = parent.leftChild;
			}
		}
	}

	/*     
	 *       
	 *   递归的二叉树中序遍历     
	 *       
	 *       
	 */
	private static void midOrder(myTree tree) {
		if (tree != null) {
			midOrder(tree.leftChild);
			System.out.println(tree + "," + tree.key + "," + tree.data);
			midOrder(tree.rightChild);
		}
	}

	/*     
	 *   前序遍历       
	 */
	private static void frontOrder(myTree tree) {
		if (tree != null) {
			System.out.println("" + tree.key + "   ,   " + tree.data);
			frontOrder(tree.leftChild);
			frontOrder(tree.rightChild);
		}
	}

	public static void main(String[] args) {
		System.out.println("Tree   view   Begin");
		MyTest t1 = new MyTest();
		t1.insert(8, 25);
		t1.insert(5, 9);
		t1.insert(58, 87);
		t1.insert(13, 82);
		t1.insert(4, 8);
		t1.insert(12, 54);
		t1.insert(53, 123);
		t1.insert(56, 47);
		t1.insert(2, 75);
		t1.insert(34, 5);
		t1.insert(6, 23);
		System.out.println("现在开始遍历:");
		frontOrder(t1.tree);
		midOrder(t1.tree);
	}

}

class myTree {
	int key;
	int data;
	myTree leftChild;
	myTree rightChild;
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics