完美二叉树

不废话,直接上代码

 

class BinaryTree { // 定义二叉树的操作类

	class Node {

		private Comparable data; // 保存数据

		private Node left;// 表示左子树

		private Node right;// 表示右子树

		public Node(Comparable data) {

			this.data = data;

		}

		public void addNode(Node newNode) {

			if (((Integer)(newNode.data)).compareTo((Integer)(this.data)) < 0) {

				if (this.left == null) { // 当前的左子树是否等于空

					this.left = newNode;

				} else {

					this.left.addNode(newNode);// 继续向下继续判断

				}

			}

			if (((Integer)(newNode.data)).compareTo((Integer)(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 BinaryTreeDemo {

	public static void main(String[] args) {

		BinaryTree bt = new BinaryTree();

		bt.add(5);

		bt.add(3);

		bt.add(1);

		bt.add(90);

		bt.add(90);

		bt.add(100);

		bt.add(60);

		bt.print();

	}

}


 

 

你可能感兴趣的:(二叉树)