BinarySearchTreeNama.java
public class BinarySearchTreeNama{
NodeNama root;
public BinarySearchTreeNama(){
root = null;
}
public void insert (char key){
root = insertRec (root, key);
}
private NodeNama insertRec(NodeNama root, char key){
if(root == null){
root = new NodeNama(key);
return root;
}
if (key<root.key){
root.left = insertRec(root.left, key);
}
else if (key>root.key){
root.right = insertRec(root.right, key);
}
return root;
}
//Preoreder class
public void PrintPreOrder(NodeNama node){
if (node == null)
return ;
System.out.print(" "+node.key + " ");
PrintPreOrder(node.left);
PrintPreOrder(node.right);
}
//InOrder Class
public void PrintInOrder(NodeNama node){
if (node==null)
return;
PrintInOrder(node.left);
System.out.print(" "+node.key + " ");
PrintInOrder(node.right);
}
//PostOrder Class
public void PrintPostOrder(NodeNama node){
if(node==null)
return;
PrintPostOrder(node.left);
PrintPostOrder(node.right);
System.out.print(" "+ node.key +" ");
}
public void PrintPreOrder(){
PrintPreOrder(root);
}
public void PrintInOrder(){
PrintInOrder(root);
}
public void PrintPostOrder(){
PrintPostOrder(root);
}
public void deleteKey(char key){
root = deleteRec(root,key);
}
public NodeNama deleteRec(NodeNama root, char key){
if(root == null ) return root;
if(key<root.key){
root.left = deleteRec(root.left, key);
}
else if(key>root.key){
root.right = deleteRec(root.right, key);
}
else {
if (root.left == null) {
return root.right;
} else if (root.right == null) {
return root.left;
}
root.key = minValue(root.right);
root.right = deleteRec(root.right, root.key);
}
return root;
}
char minValue(NodeNama root){
char minv = root.key;
while (root.left != null)
{
minv = root.left.key;
root = root.left;
}
return minv;
}
private int counting(NodeNama node){
if (node == null){
return 0;
}
else {
return 1 + counting (node.left)+ counting(node.right);
}
}
public int Size(){
return counting (root);
}
}
NodeNama root;
public BinarySearchTreeNama(){
root = null;
}
public void insert (char key){
root = insertRec (root, key);
}
private NodeNama insertRec(NodeNama root, char key){
if(root == null){
root = new NodeNama(key);
return root;
}
if (key<root.key){
root.left = insertRec(root.left, key);
}
else if (key>root.key){
root.right = insertRec(root.right, key);
}
return root;
}
//Preoreder class
public void PrintPreOrder(NodeNama node){
if (node == null)
return ;
System.out.print(" "+node.key + " ");
PrintPreOrder(node.left);
PrintPreOrder(node.right);
}
//InOrder Class
public void PrintInOrder(NodeNama node){
if (node==null)
return;
PrintInOrder(node.left);
System.out.print(" "+node.key + " ");
PrintInOrder(node.right);
}
//PostOrder Class
public void PrintPostOrder(NodeNama node){
if(node==null)
return;
PrintPostOrder(node.left);
PrintPostOrder(node.right);
System.out.print(" "+ node.key +" ");
}
public void PrintPreOrder(){
PrintPreOrder(root);
}
public void PrintInOrder(){
PrintInOrder(root);
}
public void PrintPostOrder(){
PrintPostOrder(root);
}
public void deleteKey(char key){
root = deleteRec(root,key);
}
public NodeNama deleteRec(NodeNama root, char key){
if(root == null ) return root;
if(key<root.key){
root.left = deleteRec(root.left, key);
}
else if(key>root.key){
root.right = deleteRec(root.right, key);
}
else {
if (root.left == null) {
return root.right;
} else if (root.right == null) {
return root.left;
}
root.key = minValue(root.right);
root.right = deleteRec(root.right, root.key);
}
return root;
}
char minValue(NodeNama root){
char minv = root.key;
while (root.left != null)
{
minv = root.left.key;
root = root.left;
}
return minv;
}
private int counting(NodeNama node){
if (node == null){
return 0;
}
else {
return 1 + counting (node.left)+ counting(node.right);
}
}
public int Size(){
return counting (root);
}
}
Komentar
Posting Komentar