Question
JAVA How do I implement a SearchTree class to match my BinarySearchTree and BinaryTree Classes in JAVA: BINARY SEARCH TREE import java.util.List; import java.util.ArrayList; public
JAVA
How do I implement a SearchTree class to match my BinarySearchTree and BinaryTree Classes in JAVA:
BINARY SEARCH TREE
import java.util.List; import java.util.ArrayList;
public class BinarySearchTree
protected boolean addReturn; protected E deleteReturn;
@Override public E find(E target) { return find(root, target); }
private E find(Node
int compResult = target.compareTo(localRoot.data); if (compResult == 0) { return localRoot.data; } else if (compResult < 0) { return find(localRoot.left, target); } else { return find(localRoot.right, target); } }
@Override public boolean add(E item) { root = add(root, item); return addReturn; }
private Node
public E delete(E target) { root = delete(root, target); return deleteReturn; }
private Node
// Search for item to delete. int compResult = item.compareTo(localRoot.data); if (compResult < 0) { // item is smaller than localRoot.data. localRoot.left = delete(localRoot.left, item); return localRoot; } else if (compResult > 0) { // item is larger than localRoot.data. localRoot.right = delete(localRoot.right, item); return localRoot; } else { // item is at local root. deleteReturn = localRoot.data; if (localRoot.left == null) { // If there is no left child, return right child // which can also be null. return localRoot.right; } else if (localRoot.right == null) { // If there is no right child, return left child. return localRoot.left; } else { // Node being deleted has 2 children, replace the data // with inorder predecessor. if (localRoot.left.right == null) { // The left child has no right child. // Replace the data with the data in the // left child. localRoot.data = localRoot.left.data; // Replace the left child with its left child. localRoot.left = localRoot.left.left; return localRoot; } else { // Search for the inorder predecessor (ip) and // replace deleted node's data with ip. localRoot.data = findLargestChild(localRoot.left); return localRoot; } } } }
public boolean remove(E target) { return delete(target) != null; }
public boolean contains(E target) { return find(target) != null; }
private E findLargestChild(Node
// Search for item to delete. int compResult = item.compareTo(localRoot.data); if (compResult < 0) { // item is smaller than localRoot.data. localRoot.left = deletePrime(localRoot.left, item); return localRoot; } else if (compResult > 0) { // item is larger than localRoot.data. localRoot.right = deletePrime(localRoot.right, item); return localRoot; } else { // item is at local root. deleteReturn = localRoot.data; if (localRoot.left == null) { // If there is no left child, return right child // which can also be null. return localRoot.right; } else if (localRoot.right == null) { // If there is no right child, return left child. return localRoot.left; } else { // Node being deleted has 2 children, replace the data // with inorder successor. if (localRoot.right.left == null) { // The right child has no left child. // Replace the data with the data in the // right child. localRoot.data = localRoot.right.data; // Replace the right child with its right child. localRoot.right = localRoot.right.right; return localRoot; } else { // Search for the inorder successor (is) and // replace deleted node's data with is. localRoot.data = findSmallestChild(localRoot.right); return localRoot; } } } }
/** * Find the node that is the * inorder sucessor and replace it * with its right child (if any). * @post The inorder sucessor is removed from the tree. * @param parent The parent of possible inorder * sucessor (is) * @return The data in the is */ private E findSmallestChild(Node
public List
private void toList(List
}
BINARY TREE CLASS:
import java.io.BufferedReader; import java.io.IOException; import java.io.Serializable;
public class BinaryTree
protected static class Node
public Node(E data) { this.data = data; left = null; right = null; }
@Override public String toString() { return data.toString(); } }
protected Node
public BinaryTree() { root = null; }
protected BinaryTree(Node
public BinaryTree(E data, BinaryTree
public BinaryTree
public BinaryTree
public E getData() { if (root != null) { return root.data; } else { return null; } }
public boolean isLeaf() { return (root == null || (root.left == null && root.right == null)); }
@Override public String toString() { StringBuilder sb = new StringBuilder(); preOrderTraverse(root, 1, sb); return sb.toString(); }
private void preOrderTraverse(Node
public static BinaryTree
public String preorderToString() { StringBuilder stb = new StringBuilder(); preorderToString(stb, root); return stb.toString(); }
private void preorderToString(StringBuilder stb, Node
public String postorderToString() { StringBuilder stb = new StringBuilder(); postorderToString(stb, root); return stb.toString(); }
private void postorderToString(StringBuilder stb, Node
public String inorderToString() { StringBuilder stb = new StringBuilder(); inorderToString(stb, root); return stb.toString(); }
private void inorderToString(StringBuilder stb, Node
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started