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;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.