package com.coding.basic; public class BinaryTreeNode { private Object data; private BinaryTreeNode left; private BinaryTreeNode right; public Object getData() { return data; } public void setData(Object data) { this.data = data; } public BinaryTreeNode getLeft() { return left; } public void setLeft(BinaryTreeNode left) { this.left = left; } public BinaryTreeNode getRight() { return right; } public void setRight(BinaryTreeNode right) { this.right = right; } public BinaryTreeNode insert(Object o) { BinaryTreeNode binaryTreeNode = new BinaryTreeNode(); binaryTreeNode.data = o; add(this, binaryTreeNode); return this; } private void add(BinaryTreeNode binaryTreeNodeOld, BinaryTreeNode binaryTreeNodeNew) { if (binaryTreeNodeOld.data == null) { binaryTreeNodeOld.data = binaryTreeNodeNew.data; return; } if (binaryTreeNodeOld.left == null) { binaryTreeNodeOld.left = binaryTreeNodeNew; return; } if (binaryTreeNodeOld.right == null) { if (comparator(binaryTreeNodeNew, binaryTreeNodeOld.left)){ binaryTreeNodeOld.right = binaryTreeNodeNew; }else{ binaryTreeNodeOld.right = binaryTreeNodeOld.left; binaryTreeNodeOld.left = binaryTreeNodeNew; } return; } if(comparator(binaryTreeNodeOld.left, binaryTreeNodeNew)) { add(binaryTreeNodeOld.left,binaryTreeNodeNew); return; } if(comparator(binaryTreeNodeOld.right, binaryTreeNodeNew)){ add(binaryTreeNodeOld.right,binaryTreeNodeNew); return; }else{ binaryTreeNodeNew.left = binaryTreeNodeOld.right; binaryTreeNodeOld.right = binaryTreeNodeNew; } } private boolean comparator(BinaryTreeNode binaryTreeNode1, BinaryTreeNode binaryTreeNode2) { if ((Integer) binaryTreeNode1.getData() > (Integer) binaryTreeNode2.getData()) { return true; } return false; } }