public class BinaryTree{
protected Node root;
protected int size = 0;
protected INodeCreator creator = null;
public BinaryTree(){
root = null;
}
final public void insertLeft(E data, Node node){
if(node.left != null){
System.out.println("ì¼ìª½ ë
¸ëê° ì´ë¯¸ ì°¨ìì");
return ;
}
if(root == null){
root = node;
}
Node newNode = new Node(data);
node.left = newNode;
}
final public void insertRight(E data, Node node){
if(node.right != null){
System.out.println("ì¤ë¥¸ìª½ ë
¸ëê° ì´ë¯¸ ì°¨ìì");
return ;
}
if(root == null){
root = node;
}
Node newNode = new Node(data);
node.right = newNode;
}
protected int getMaxLevel(Node node){
if(node == null)
return 0;
return java.lang.Math.max(getMaxLevel(node.left), getMaxLevel(node.right)) + 1;
}
public void printPreOrder(){
BinaryTreePrinter.printPreOrder(root);
}
public void printInOrder(){
BinaryTreePrinter.printInOrder(root);
}
public void printPostOrder(){
BinaryTreePrinter.printPostOrder(root);
}
public void printLevelOrder(){
BinaryTreePrinter.printLevelOrder(root);
}
public void printBFS(){
BinaryTreePrinter.printBFS(root);
}
public void print(){
BinaryTreePrinter.print(root);
}
public static class Node{
// Inner class ììë private ë¼ë ë©¤ë² ë³ì ì ê·¼ ê°ë¥í¨!
public E element;
public Node parent;
public Node left;
public Node right;
public Node(){
this.left = null;
this.right = null;
}
public Node(E element){
this.element = element;
this.left = null;
this.right = null;
}
public Node(E element,Node parent){
this.parent = parent;
this.element = element;
this.left = null;
this.right = null;
}
public void visit(){
System.out.print(element);
}
}
protected static interface INodeCreator> {
public Node createNewNode(E id,Node parent);
}
}