不废话,直接上代码
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(); } }