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

Problem: Add a main to demonstrates all of the methods. Code: import java.util.A

ID: 3849482 • Letter: P

Question

Problem:

Add a main to demonstrates all of the methods.

Code:

import java.util.AbstractList;
import java.util.ArrayList;
import java.util.LinkedList;

public class BST {
    class Node {
        T data;
        Node left;
        Node right;
      
        Node(T data){
            this.data = data;
            left= right = null;
        }
    }
  
    Node root;
    BST(){
        root = null;
    }
    public void add(T data){
        Comparable comparable = (Comparable)data;
        Node newNode = new Node(data);
      
        if (root == null)
            root = newNode;
        else {
            Node tempNode = root;
            Node tempParent = null;
            while (tempNode!=null){
                tempParent = tempNode;
                if (comparable.compareTo(tempNode.data)<0)
                    tempNode = tempNode.left;
                else
                    tempNode = tempNode.right;
            }
          
            if (comparable.compareTo(tempNode.data)<0)
                    tempNode.left = newNode;
                else
                    tempNode.right = newNode;
          
        }
    }
  
    public boolean find(T data){
        Comparable comparable = (Comparable)data;
        if (root == null)
            return false;
        else {
            Node tempNode = root;
            while (tempNode!=null){
                if (tempNode.data.equals(data))
                    return true;
                if (comparable.compareTo(tempNode.data)<0)
                    tempNode = tempNode.left;
                else
                    tempNode = tempNode.right;
            }       
        }
        return false;
    }
    public int leafCount(){
        return leafCount(root);
    }
    private int leafCount(Node tree){
        if(tree == null)
            return 0;
        if (tree.left == null && tree.right == null)
            return 1;
        return leafCount(tree.left)+ leafCount(tree.left);
    }
    public int parentCount(){
        return parentCount(root);
    }
    private int parentCount(Node tree){
        if(tree == null)
            return 0;
        if (tree.left == null && tree.right == null)
            return 0;
        return parentCount(tree.left)+ parentCount(tree.left)+1;
    }
    public int height(){
        return height(root);
    }
    private int height(Node tree){
        if(tree == null)
            return 0;
        return Math.max(height(tree.left), height(tree.right))+1;
    }
  
    public boolean isPerfect(){
        return (Math.pow(2,height())-1) == (leafCount()+parentCount());
    }
  
    public java.util.List ansestors(T data){
        java.util.List list = new LinkedList<>();
        Comparable comparable = (Comparable)data;
        if (root == null)
            return null;
        else {
            Node tempNode = root;
            while (tempNode!=null){
                if (tempNode.data.equals(data))
                    return list;
                list.add(tempNode.data);
                if (comparable.compareTo(tempNode.data)<0)
                    tempNode = tempNode.left;
                else
                    tempNode = tempNode.right;
            }       
        }
        return null;
    }
  
    public void printInOrder(){
        System.out.print("| ");
        printInOrder(root);
    }
  
    private void printInOrder(Node tree){
        printInOrder(tree.left);
        System.out.print(tree.data.toString()+" | ");
        printInOrder(tree.right);
    }
  
  
    public void printPreOrder(){
        System.out.print("| ");
        printPreOrder(root);
    }
  
    private void printPreOrder(Node tree){
        System.out.print(tree.data.toString()+" | ");
        printPreOrder(tree.left);
        printPreOrder(tree.right);
    }
}

Explanation / Answer

import java.util.AbstractList;
import java.util.ArrayList;
import java.util.LinkedList;

public class BST {
    class Node {
        T data;
        Node left;
        Node right;
      
        Node(T data){
            this.data = data;
            left= right = null;
        }
    }
  
    Node root;
    BST(){
        root = null;
    }
    public void add(T data){
        Comparable comparable = (Comparable)data;
        Node newNode = new Node(data);
      
        if (root == null)
            root = newNode;
        else {
            Node tempNode = root;
            Node tempParent = null;
            while (tempNode!=null){
                tempParent = tempNode;
                if (comparable.compareTo(tempNode.data)<0)
                    tempNode = tempNode.left;
                else
                    tempNode = tempNode.right;
            }
          
            if (comparable.compareTo(tempNode.data)<0)
                    tempNode.left = newNode;
                else
                    tempNode.right = newNode;
          
        }
    }
  
    public boolean find(T data){
        Comparable comparable = (Comparable)data;
        if (root == null)
            return false;
        else {
            Node tempNode = root;
            while (tempNode!=null){
                if (tempNode.data.equals(data))
                    return true;
                if (comparable.compareTo(tempNode.data)<0)
                    tempNode = tempNode.left;
                else
                    tempNode = tempNode.right;
            }       
        }
        return false;
    }
    public int leafCount(){
        return leafCount(root);
    }
    private int leafCount(Node tree){
        if(tree == null)
            return 0;
        if (tree.left == null && tree.right == null)
            return 1;
        return leafCount(tree.left)+ leafCount(tree.left);
    }
    public int parentCount(){
        return parentCount(root);
    }
    private int parentCount(Node tree){
        if(tree == null)
            return 0;
        if (tree.left == null && tree.right == null)
            return 0;
        return parentCount(tree.left)+ parentCount(tree.left)+1;
    }
    public int height(){
        return height(root);
    }
    private int height(Node tree){
        if(tree == null)
            return 0;
        return Math.max(height(tree.left), height(tree.right))+1;
    }
  
    public boolean isPerfect(){
        return (Math.pow(2,height())-1) == (leafCount()+parentCount());
    }
  
    public java.util.List ansestors(T data){
        java.util.List list = new LinkedList<>();
        Comparable comparable = (Comparable)data;
        if (root == null)
            return null;
        else {
            Node tempNode = root;
            while (tempNode!=null){
                if (tempNode.data.equals(data))
                    return list;
                list.add(tempNode.data);
                if (comparable.compareTo(tempNode.data)<0)
                    tempNode = tempNode.left;
                else
                    tempNode = tempNode.right;
            }       
        }
        return null;
    }

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