package com.coding.basic; public class BinaryTreeNode { static class Node { Integer data; Node parent; Node left; Node right; public Node(Integer data, Node parent, Node left, Node right) { this.data = data; this.parent = parent; this.left = left; this.right = right; } public String toString(){ return "[data=" + data + "]"; } public boolean equals(Object obj){ if(this == obj){ return true; } if(obj.getClass() == Node.class){ Node target = (Node) obj; return data.equals(target.data) && left == target.left && right == target.right && parent == target.parent; } return false; } } private Node root; BinaryTreeNode() { root = null; } BinaryTreeNode(Integer data) { root = new Node(data, null, null, null); } /** * 暂且使用Intenger作为节点数据。 * @param o */ public void insert(Integer o) { if (root == null) { root = new Node(o, null, null, null); } else { Node current = root; Node parent = null; int cmp; //搜索合适的叶子节点,以该叶子节点为父节点添加新节点 do { parent = current; cmp = o.compareTo(current.data); //如果新节点的值大于当前节点的值 if (cmp > 0) { //以当前节点的右子节点作为当前节点 current = current.right; } else { current = current.left; } } while (current != null); //创建新节点 Node newNode = new Node(o, parent, null, null); //如果新节点的值大于父节点的值 if (cmp > 0) { parent.right = newNode; } else { parent.left = newNode; } } } }