Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I am working with a Java program to create a balanced and unbalanced binary sear

ID: 3764532 • Letter: I

Question

I am working with a Java program to create a balanced and unbalanced binary search tree. I have created the unbalanced but I still need to create a balancing factor. I also am trying to add a feature to determine the height of the two trees as well as implement code that will not allow duplicate entries to be added to the tree.

Below is my existing code.

public class BSTNode
{
    int data;
    BSTNode parent;
    BSTNode left;
    BSTNode right;

    public BSTNode(int data)
    {
        this.data = data;
        this.left = null;
        this.right = null;
        this.parent = null;
    }

    public BSTNode()
    {
    }
}

------------------------------------------------------------

public class BSTFunctions
{
    BSTNode ROOT;
public BSTFunctions()
    {
        this.ROOT = null;
    }

    void insertNode(BSTNode node, int data)
    {
        if (node == null)
        {
            node = new BSTNode(data);
            ROOT = node;
        }
        else if (data < node.data && node.left == null)
        {
            node.left = new BSTNode(data);
            node.left.parent = node;
        }
        else if (data >= node.data && node.right == null)
        {
            node.right = new BSTNode(data);
            node.right.parent = node;
        }
        else
        {
            if (data < node.data)
            {
                insertNode(node.left, data);
            }
            else
            {
                insertNode(node.right, data);
            }
        }
    }

    public boolean search(BSTNode node, int data)
    {
        if (node == null)
        {
            return false;
        }
        else if (node.data == data)
        {
            return true;
        }
        else
        {
            if (data < node.data)
            {
                return search(node.left, data);
            }
            else
            {
                return search(node.right, data);
            }
        }
    }
   

    public void printInOrder(BSTNode node)
    {
        if (node != null)
        {
            printInOrder(node.left);
            System.out.print(node.data + " ");
            printInOrder(node.right);
        }
    }

    public void printPostOrder(BSTNode node)
    {
        if (node != null)
        {
            printPostOrder(node.left);
            printPostOrder(node.right);
            System.out.print(node.data + " ");
        }
    }

    public void printPreOrder(BSTNode node)
    {
        if (node != null)
        {
            System.out.print(node.data + " ");
            printPreOrder(node.left);
            printPreOrder(node.right);
        }
    }

    public static void main(String[] args)
    {
        BSTFunctions f = new BSTFunctions();

//      Insert

        f.insertNode(f.ROOT, 77);
//        f.insertNode(f.ROOT, 29);
//        f.insertNode(f.ROOT, 23);
        f.insertNode(f.ROOT, 19);
        f.insertNode(f.ROOT, 37);
        f.insertNode(f.ROOT, 43);
        f.insertNode(f.ROOT, 26);
        f.insertNode(f.ROOT, 55);
        f.insertNode(f.ROOT, 36);
        f.insertNode(f.ROOT, 16);
//       f.insertNode(f.ROOT, 21);
        f.insertNode(f.ROOT, 23);
        f.insertNode(f.ROOT, 24);
        f.insertNode(f.ROOT, 7);
        f.insertNode(f.ROOT, 51);
        f.insertNode(f.ROOT, 20);
        f.insertNode(f.ROOT, 9);
        f.insertNode(f.ROOT, 13);
        f.insertNode(f.ROOT, 87);
        f.insertNode(f.ROOT, 52);
        f.insertNode(f.ROOT, 86);
        f.insertNode(f.ROOT, 21);
        f.insertNode(f.ROOT, 15);
        f.insertNode(f.ROOT, 29);
        f.insertNode(f.ROOT, 6);
        f.insertNode(f.ROOT, 54);
//        f.insertNode(f.ROOT, 77);
        f.insertNode(f.ROOT, 88);
       


//      Print

  System.out.println("Preorder of Unbalanced: ");
        f.printPreOrder(f.ROOT);
        System.out.println("");
  System.out.println("Postorder of Unbalanced: ");
        f.printPostOrder(f.ROOT);
        System.out.println("");
  System.out.println("Inorder of Unbalanced: ");
        f.printInOrder(f.ROOT);
        System.out.println("");

    }
}

Explanation / Answer

Answer :

class BSTNode
{
int data;
BSTNode parent;
BSTNode left;
BSTNode right;
public BSTNode(int data)
{
this.data = data;
this.left = null;
this.right = null;
this.parent = null;
}
public BSTNode()
{
}
}

public class BSTFunctions
{
BSTNode ROOT;
public BSTFunctions()
{
this.ROOT = null;
}
void insertNode(BSTNode node, int data)
{
if (node == null)
{
node = new BSTNode(data);
ROOT = node;
}
else if (data < node.data && node.left == null)
{
node.left = new BSTNode(data);
node.left.parent = node;
}
else if (data >= node.data && node.right == null)
{
node.right = new BSTNode(data);
node.right.parent = node;
}
else
{
if (data < node.data)
{
insertNode(node.left, data);
}
else
{
insertNode(node.right, data);
}
}
}
public boolean search(BSTNode node, int data)
{
if (node == null)
{
return false;
}
else if (node.data == data)
{
return true;
}
else
{
if (data < node.data)
{
return search(node.left, data);
}
else
{
return search(node.right, data);
}
}
}

public void printInOrder(BSTNode node)
{
if (node != null)
{
printInOrder(node.left);
System.out.print(node.data + " ");
printInOrder(node.right);
}
}
public void printPostOrder(BSTNode node)
{
if (node != null)
{
printPostOrder(node.left);
printPostOrder(node.right);
System.out.print(node.data + " ");
}
}
public void printPreOrder(BSTNode node)
{
if (node != null)
{
System.out.print(node.data + " ");
printPreOrder(node.left);
printPreOrder(node.right);
}
}
public static void main(String[] args)
{
BSTFunctions f = new BSTFunctions();
// Insert
f.insertNode(f.ROOT, 77);
// f.insertNode(f.ROOT, 29);
// f.insertNode(f.ROOT, 23);
f.insertNode(f.ROOT, 19);
f.insertNode(f.ROOT, 37);
f.insertNode(f.ROOT, 43);
f.insertNode(f.ROOT, 26);
f.insertNode(f.ROOT, 55);
f.insertNode(f.ROOT, 36);
f.insertNode(f.ROOT, 16);
// f.insertNode(f.ROOT, 21);
f.insertNode(f.ROOT, 23);
f.insertNode(f.ROOT, 24);
f.insertNode(f.ROOT, 7);
f.insertNode(f.ROOT, 51);
f.insertNode(f.ROOT, 20);
f.insertNode(f.ROOT, 9);
f.insertNode(f.ROOT, 13);
f.insertNode(f.ROOT, 87);
f.insertNode(f.ROOT, 52);
f.insertNode(f.ROOT, 86);
f.insertNode(f.ROOT, 21);
f.insertNode(f.ROOT, 15);
f.insertNode(f.ROOT, 29);
f.insertNode(f.ROOT, 6);
f.insertNode(f.ROOT, 54);
// f.insertNode(f.ROOT, 77);
f.insertNode(f.ROOT, 88);

// Print
System.out.println("Preorder of Unbalanced: ");
f.printPreOrder(f.ROOT);
System.out.println("");
System.out.println("Postorder of Unbalanced: ");
f.printPostOrder(f.ROOT);
System.out.println("");
System.out.println("Inorder of Unbalanced: ");
f.printInOrder(f.ROOT);
System.out.println("");
   displayBalanceFactor(BSTNode node);
}
  
   public int displayBalanceFactor(BinaryTree t)
{
if (t == null)
return 0;

if (t.left == null && t.right == null)
return 1;

int heightLeft = displayBalanceFactor(t.left);
int heightRight = displayBalanceFactor(t.right);

System.out.println("Balance factor of " + t + " is " + (heightLeft - heightRight));

return heightLeft + heightRight + 1;
}


}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote