package com.coding.basic;
public class BinarySearchTree<T extends Comparable> {
private T data;
private BinarySearchTree<T> leftChild;
private BinarySearchTree<T> rightChild;
public BinarySearchTree() {
super();
this.data = null;
this.leftChild = null;
this.rightChild = null;
}
public BinarySearchTree(T data) {
this();
this.data = data;
}
public T getData() {
return data;
}
public BinarySearchTree<T> getLeftChild() {
return leftChild;
}
public BinarySearchTree<T> getRightChild() {
return rightChild;
}
public void setData(T data) {
this.data = data;
}
public void setLeftChild(BinarySearchTree<T> leftChild) {
this.leftChild = leftChild;
}
public void setRightChild(BinarySearchTree<T> rightChild) {
this.rightChild = rightChild;
}
public void insert(T element) {
insert(element, this);
}
private boolean insert(T element, BinarySearchTree<T> node) {
BinarySearchTree<T> bstNode = new BinarySearchTree(element);
return false;
}
public void inOrder(BinarySearchTree<T> node) {
if (node != null) {
inOrder(node.getLeftChild());
visit(node);
inOrder(node.getRightChild());
}
}
public void levelOrder(BinarySearchTree<T> node) {
Queue queue = new Queue();
BinarySearchTree<T> bstNode = null;
queue.enQueue(node);
while (!queue.isEmpty()) {
bstNode = (BinarySearchTree) queue.deQueue();
visit(bstNode);
if (bstNode.getLeftChild() != null) {
queue.enQueue(bstNode.getLeftChild());
}
if (bstNode.getRightChild() != null) {
queue.enQueue(bstNode.getRightChild());
}
}
}
public void visit(BinarySearchTree<T> node) {
System.out.println(node.getData());
}
}