Main.java x 1 import java.util.*; 2 , public class Main 3 Av public static void main(String [] args){ BinarySearchTree1 myTree = new BinarySearchTree1(); 5 myTree. Insert (1); myTree.getHeight(); myTree.getlargestKey (); myTree.getAverage () ; 7 8. 10 11 12 13 3
Fix the main file errors.
public void Insert(int newItem)
{
Node parent = null;
Node newNode = new Node(newItem);
Node current = root;
while (current != null) {
parent = current;
if (newNode.item < current.item) {
current = current.Left;
} else {
current = current.Right;
}
}
if (root == null) {
root = newNode;
} else
{
if (newNode.item < parent.item) {
parent.Left = newNode;
} else {
parent.Right = newNode;
}
}
}
private int getHeight(){
return findHeight(root);
}
private int findHeight(Node root){
if(root==null){
return 0;
}
int leftHeight = findHeight(root.Left);
int rightHeight = findHeight(root.Right);
return Math.max(leftHeight,rightHeight)+1;
}
private int getLargestKey(){
enrichLargest(root);
return max;
}
private float getAverage(){
enrichSum(root);
enrichCount(root);
return (float)sum/(float)count;
}
private void enrichCount(Node root) {
if(root!=null){
count++;
}
enrichSum(root.Left);
enrichSum(root.Right);
}
private void enrichSum(Node root){
if(root!=null){
sum += root.item;
}
enrichSum(root.Left);
enrichSum(root.Right);
}
private void enrichLargest(Node root){
if(root!=null){
max = Math.max(root.item,max);
}
enrichLargest(root.Left);
enrichLargest(root.Right);
}
public boolean Delete(int key)
{
Node parent = null;
Node curr = root;
while (curr != null && curr.item != key)
{
parent = curr;
if (key < curr.item) {
curr = curr.Left;
} else {
curr = curr.Right;
}
}
if (curr == null) {
return false;
}
if (curr.Left == null && curr.Right == null) {
if (curr != root) {
if (parent.Left == curr) {
parent.Left = null;
}else{
parent.Right = null;
}
} else{
root = null;
}
}
else if (curr.Left != null && curr.Right != null) {
Node successor = getSuccessor(curr.Right);
int val = successor.item;
Delete(successor.item);
curr.item = val;
}
else {
Node child = (curr.Left != null)? curr.Left: curr.Right;
if (curr != root){
if (curr == parent.Left) {
parent.Left = child;
} else {
parent.Right = child;
}
} else {
root = child;
}
}
return true;
}
public Node getSuccessor(Node curr) {
while (curr.Left != null) {
curr = curr.Left;
}
return curr;
}
public void printOrderTraversal(Order order){
switch(order){
case IN_ORDER:
InOrder(root);
break;
case PRE_ORDER:
preOrder(root);
break;
case POST_ORDER:
postOrder(root);
default:
}
}
public void InOrder(Node theRoot) {
if (!(theRoot == null))
{
InOrder(theRoot.Left);
theRoot.DisplayNode();
InOrder(theRoot.Right);
}
}
public void preOrder(Node theRoot) {
if (!(theRoot == null))
{
theRoot.DisplayNode();
preOrder(theRoot.Left);
preOrder(theRoot.Right);
}
}
public void postOrder(Node theRoot) {
if (!(theRoot == null))
{
postOrder(theRoot.Left);
postOrder(theRoot.Right);
theRoot.DisplayNode();
}
}
public class Node{
public int item;
public Node Left;
public Node Right;
public Node(int item) {
this.item = item;
Left=null;
Right=null;
}
void DisplayNode(){
System.out.println(this.item);
}
}
public enum Order{
PRE_ORDER,
POST_ORDER,
IN_ORDER
}
}
Trending now
This is a popular solution!
Step by step
Solved in 2 steps