package com.coding.basic; public class BinaryTreeNode <T extends Comparable<T>> { private T data; private BinaryTreeNode<T> left; private BinaryTreeNode <T> right; public T getData() { return data; } public void setData(T data) { this.data = data; } public BinaryTreeNode<T> getLeft() { return left; } public void setLeft(BinaryTreeNode<T> left) { this.left = left; } public BinaryTreeNode<T> getRight() { return right; } public void setRight(BinaryTreeNode<T> right) { this.right = right; } public BinaryTreeNode<T> insert(T o){ return insert(this,o); } public BinaryTreeNode<T> insert(BinaryTreeNode<T> bt, T o) { BinaryTreeNode<T> insertedNode = null; if(null == this.data) { this.data = o; return this; } if(-1 == o.compareTo(bt.data)) { if(null == bt.left) { insertedNode = new BinaryTreeNode<T>(); insertedNode.data = o; bt.left = insertedNode; return insertedNode; } return insert(bt.left,o); }else { if(null == bt.right) { insertedNode = new BinaryTreeNode<T>(); insertedNode.data = o; bt.right = insertedNode; return insertedNode; } return insert(bt.right,o); } } @Override public String toString() { StringBuilder space = new StringBuilder(""); return getString(this,space,0).toString(); } private StringBuilder getString(BinaryTreeNode<T> head,StringBuilder space,int deepth) { StringBuilder spaceTemp = new StringBuilder(space.toString()); if (null == head) { return new StringBuilder(" null , "); } else { StringBuilder tempStr = new StringBuilder(" {").append(spaceTemp.append(head.data.toString()) .append(new StringBuilder(space)).append("} ")); deepth++; return getString(head.left, space, deepth).append(deepth) .append(tempStr).append(deepth).append("\n") .append(getString(head.right, space, deepth)); } } }