package com.work.week01; public class MyBinaryTree<E> { private MyBinaryTreeNode<E> parent; public MyBinaryTree(){ this.parent = new MyBinaryTreeNode<E>(null, null, null); } public void insertNode(E element){ MyBinaryTreeNode<E> node = new MyBinaryTreeNode<E>(element, null, null); if(parent.element == null){ parent = node; return; } insertNode(parent, node); } private void insertNode(MyBinaryTreeNode<E> parentNode, MyBinaryTreeNode<E> newNode){ if(parentNode.compareTo(newNode) <= 0){// if(parentNode.right == null){ parentNode.right = newNode; }else{ insertNode(parentNode.right, newNode); } }else{ if(parentNode.left == null){ parentNode.left = newNode; }else{ insertNode(parentNode.left, newNode); } } } private void printNode(MyBinaryTreeNode<E> node, int count){ if(node.left != null){ printNode(node.left, count++); } if(node.right != null){ printNode(node.right, count++); } for(int i=0;i<count;i++){ System.out.println(); } System.out.print(node.element); } public void printTree(){ printNode(this.parent, 0); } private class MyBinaryTreeNode<T> implements Comparable<MyBinaryTreeNode<T>> { private T element; private MyBinaryTreeNode<T> left; private MyBinaryTreeNode<T> right; public MyBinaryTreeNode(T element, MyBinaryTreeNode<T> left, MyBinaryTreeNode<T> right){ this.element = element; this.left = left; this.right = right; } @Override public int compareTo(MyBinaryTreeNode<T> o) { Integer src = (Integer) this.element; Integer dest = (Integer) o.element; return src.compareTo(dest); } } public static void main(String[] args) { MyBinaryTree<Integer> tree = new MyBinaryTree<Integer>(); tree.insertNode(5); tree.insertNode(7); tree.insertNode(3); tree.insertNode(9); tree.insertNode(4); tree.printTree(); } }