package com.coding.basic; public class BinaryTreeNode<T extends Comparable<T>>{ private T data; private BinaryTreeNode<T> left; private BinaryTreeNode<T> right; private BinaryTreeNode<T> root; private LinkedList tree = new LinkedList(); public Object 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){ BinaryTreeNode<T> currNode = null; if(root==null){ currNode = new BinaryTreeNode<T>(); currNode.data = o; this.root = currNode; tree.addFirst(currNode); }else{ currNode = findTheParentPosition(root,o); if(o.compareTo(currNode.data)>0){ BinaryTreeNode<T> tNode = new BinaryTreeNode<T>(); tNode.data = o; tree.add(tNode); }else{ BinaryTreeNode<T> tNode = new BinaryTreeNode<T>(); tNode.data = o; currNode.left = tNode; tree.add(tNode); } } return currNode; } private BinaryTreeNode<T> findTheParentPosition(BinaryTreeNode<T> node ,T o){ if(o.compareTo(node.data) >0){ if(node.getRight()!=null) return findTheParentPosition(node.getRight(),o); else return node; }else{ if(node.getLeft()!=null) return findTheParentPosition(node.getLeft(),o); else return node; } } public void printTree(){ if(this.tree!=null){ Iterator i = tree.iterator(); while(i.hasNext()){ System.out.println(i.next()); } } } @Override public String toString() { StringBuffer sb = new StringBuffer(); sb.append("[Node data:"+this.data+"]"); return sb.toString(); } }