Question: Java: There needs to be a BNode Class to complete this program. Create an appropreiate BNode class to make this code work below. import java.lang.*;

Java: There needs to be a BNode Class to complete this program. Create an appropreiate BNode class to make this code work below.

import java.lang.*;

public class BinarySearchTree

{

private static BNode root;

public BinarySearchTree()

{

root = null;

}

public void addNode(int n)

{

BNode current = root;

BNode newNode = new BNode();

newNode.data = n;

newNode.left = null;

newNode.right = null;

if(root == null)

{

root = newNode;

}

else

{

while(root != null)

{

if(newNode.data > current.data)

{

if(current.right == null)

{

current.right = newNode;

break;

}

else

{

current = current.right;

}

}

else

{

if(current.left == null)

{

current.left = newNode;

break;

}

else

{

current = current.left;

}

}

}

}

}

public static void inOrder(BNode node)

{

if(node == null)

return;

inOrder(node.left);

System.out.print(node.data + " ");

inOrder(node.right);

}

public static void printInOrder()

{

inOrder(root);

}

public static void preOrder(BNode node)

{

if(node == null)

return;

System.out.print(node.data + " ");

preOrder(node.left);

preOrder(node.right);

}

public static void printPreOrder()

{

preOrder(root);

}

public static void postOrder(BNode node)

{

if(node == null)

return;

postOrder(node.left);

postOrder(node.right);

System.out.print(node.data + " ");

}

public static void printPostOrder()

{

postOrder(root);

}

public static void revOrder(BNode node)

{

if(node == null)

return;

revOrder(node.right);

System.out.print(node.data + " ");

revOrder(node.left);

}

public static void printRevOrder()

{

revOrder(root);

}

public static BNode findMin()

{

BNode current = root;

if(current==null)

return current;

while(current.left != null)

current = current.left;

return current;

}

public static BNode findMax()

{

BNode current = root;

if(current==null)

return current;

while(current.right != null)

current = current.right;

return current;

}

public BNode searchTree(int n)

{

if (root == null)

return root;

BNode current = root;

BNode parent = root;

boolean currentIsLeft = true;

while (current.data != n)

{

parent = current;

if (current.data > n)

{

currentIsLeft = true;

current = current.left;

}

else

{

currentIsLeft = false;

current = current.right;

}

if (current == null)

return current;

if (current.left == null && current.right == null)

if (parent == current)

root = null;

else if (currentIsLeft)

parent.left = null;

else

parent.right = null;

else if (current.left == null)

if (parent == current)

root = current.right;

else if (currentIsLeft)

parent.left = current.right;

else

parent.right = current.right;

else if (current.right == null)

if (parent == current)

root = current.left;

else if (currentIsLeft)

parent.left = current.left;

else

parent.right = current.left;

else

{

BNode successor = getSuccessor(current);

if (parent == current)

root = successor;

else if (currentIsLeft)

parent.left = successor;

else

parent.right = successor;

successor.left = current.left;

}

}

return current;

}

private BNode getSuccessor(BNode removedNode)

{

BNode successorParent = removedNode;

BNode successor = removedNode;

BNode current = successor.right;

while (current != null)

{

successorParent = successor;

successor = current;

current = current.left;

}

if (successor != removedNode.right)

{

successorParent.left = successor.right;

successor.right = removedNode.right;

}

return successor;

}

public static void main(String args[])

{

BinarySearchTree bst = new BinarySearchTree();

int[] arr = {15, 9, 4, 13, 26, 32, 24};

for(int i=0; i

bst.addNode(arr[i]);

System.out.print("Print Inorder : ");

printInOrder();

System.out.print(" Print Postorder : ");

printPostOrder();

System.out.print(" Print Preorder : ");

printPreOrder();

System.out.print(" Print Reverseorder : ");

printRevOrder();

System.out.println();

BNode search = bst.searchTree(24);

if (search != null)

System.out.println("Found");

else

System.out.println("Not Found");

search = bst.searchTree(28);

if (search != null)

System.out.println("Found");

else

System.out.println("Not Found");

BNode min = findMin();

System.out.println("Min element : " + min.data);

BNode max = findMax();

System.out.println("Max element : " + max.data);

}

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!