Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Really struggling to even get started on this, can anyone help me complete this?? The requirement is to fully complete the ArrayList.java and ArrayUnorderedList.java file

Really struggling to even get started on this, can anyone help me complete this??

image text in transcribed

The requirement is to fully complete the ArrayList.java and ArrayUnorderedList.java file and complete at least five methods in the LinkedBinaryTree.java file as well.

You cannot use a package/import that isn't already provided in the code.

//ArrayList.java

import java.util.*;

/** * ArrayList represents an array implementation of a list. The front of * the list is kept at array index 0. This class will be extended * to create a specific kind of list. * * @author Lewis and Chase * @version 4.0 */ public abstract class ArrayList implements ListADT, Iterable { private final static int DEFAULT_CAPACITY = 100; private final static int NOT_FOUND = -1; protected int rear; protected T[] list; protected int modCount;

/** * Creates an empty list using the default capacity. */ public ArrayList() { this(DEFAULT_CAPACITY); }

/** * Creates an empty list using the specified capacity. * * @param initialCapacity the integer value of the size of the array list */ public ArrayList(int initialCapacity) { rear = 0; list = (T[])(new Object[initialCapacity]); modCount = 0; }

/** * Creates a new array to store the contents of this list with * twice the capacity of the old one. Called by descendant classes * that add elements to the list. */ protected void expandCapacity() { list = Arrays.copyOf(list, list.length*2); } /** * Removes and returns the last element in this list. * * @return the last element in the list * @throws EmptyCollectionException if the element is not in the list */ @Override public T removeLast() throws EmptyCollectionException { //TODO: Implement this. }

/** * Removes and returns the first element in this list. * * @return the first element in the list * @throws EmptyCollectionException if the element is not in the list */ @Override public T removeFirst() throws EmptyCollectionException { //TODO: Implement this. }

/** * Removes and returns the specified element. * * @param element the element to be removed and returned from the list * @return the removed elememt * @throws ElementNotFoundException if the element is not in the list */ @Override public T remove(T element) { T result; int index = find(element);

if (index == NOT_FOUND) throw new ElementNotFoundException("ArrayList");

result = list[index]; rear--; // shift the appropriate elements for (int scan=index; scan

return result; } /** * Returns a reference to the element at the front of this list. * The element is not removed from the list. Throws an * EmptyCollectionException if the list is empty. * * @return a reference to the first element in the list * @throws EmptyCollectionException if the list is empty */ @Override public T first() throws EmptyCollectionException { if (isEmpty()) throw new EmptyCollectionException("ArrayList");

return list[0]; }

/** * Returns a reference to the element at the rear of this list. * The element is not removed from the list. Throws an * EmptyCollectionException if the list is empty. * * @return a reference to the last element of this list * @throws EmptyCollectionException if the list is empty */ @Override public T last() throws EmptyCollectionException { if (isEmpty()) throw new EmptyCollectionException("ArrayList");

return list[rear-1]; }

/** * Returns true if this list contains the specified element. * * @param target the target element * @return true if the target is in the list, false otherwise */ public boolean contains(T target) { return (find(target) != NOT_FOUND); }

/** * Returns the array index of the specified element, or the * constant NOT_FOUND if it is not found. * * @param target the target element * @return the index of the target element, or the * NOT_FOUND constant */ private int find(T target) { int scan = 0; int result = NOT_FOUND; if (!isEmpty()) while (result == NOT_FOUND && scan

return result; }

/** * Returns true if this list is empty and false otherwise. * * @return true if the list is empty, false otherwise */ @Override public boolean isEmpty() { return (rear == 0); } /** * Returns the number of elements currently in this list. * * @return the number of elements in the list */ @Override public int size() { return rear; }

/** * Returns a string representation of this list. * * @return the string representation of the list */ @Override public String toString() { String result = "";

for(T element : list) result += element + " ";

return result; } /** * Returns an iterator for the elements currently in this list. * * @return an iterator for the elements in the list */ @Override public Iterator iterator() { return new ArrayListIterator(); }

/** * ArrayListIterator iterator over the elements of an ArrayList. */ private class ArrayListIterator implements Iterator { int iteratorModCount; int current; /** * Sets up this iterator using the specified modCount. * * @param modCount the current modification count for the ArrayList */ public ArrayListIterator() { iteratorModCount = modCount; current = 0; } /** * Returns true if this iterator has at least one more element * to deliver in the iteration. * * @return true if this iterator has at least one more element to deliver * in the iteration * @throws ConcurrentModificationException if the collection has changed * while the iterator is in use */ @Override public boolean hasNext() throws ConcurrentModificationException { if (iteratorModCount != modCount) throw new ConcurrentModificationException(); return (current

//ArrayUnorderedList.java

/** * ArrayUnorderedList represents an array implementation of an unordered list. * * @author Lewis and Chase * @version 4.0 */ public class ArrayUnorderedList extends ArrayList implements UnorderedListADT { /** * Creates an empty list using the default capacity. */ public ArrayUnorderedList() { super(); }

/** * Creates an empty list using the specified capacity. * * @param initialCapacity the intial size of the list */ public ArrayUnorderedList(int initialCapacity) { super(initialCapacity); }

/** * Adds the specified element to the front of this list. * * @param element the element to be added to the front of the list */ @Override public void addToFront(T element) { // TODO: Implement this. }

/** * Adds the specified element to the rear of this list. * * @param element the element to be added to the list */ @Override public void addToRear(T element) { // TODO: Implement this. }

/** * Adds the specified element after the specified target element. * Throws an ElementNotFoundException if the target is not found. * * @param element the element to be added after the target element * @param target the target that the element is to be added after */ @Override public void addAfter(T element, T target) { if (size() == list.length) expandCapacity();

int scan = 0; // find the insertion point while (scan scan; shift--) list[shift] = list[shift-1];

// insert element list[scan] = element; rear++; modCount++; } }

//LinkedBinaryTree.java

import java.util.*;

/** * LinkedBinaryTree implements the BinaryTreeADT interface * * @author Lewis and Chase * @version 4.0 */ public class LinkedBinaryTree implements BinaryTreeADT, Iterable { protected BinaryTreeNode root; protected int modCount; /** * Creates an empty binary tree. */ public LinkedBinaryTree() { root = null; }

/** * Creates a binary tree with the specified element as its root. * * @param element the element that will become the root of the binary tree */ public LinkedBinaryTree(T element) { root = new BinaryTreeNode(element); } /** * Creates a binary tree with the specified element as its root and the * given trees as its left child and right child * * @param element the element that will become the root of the binary tree * @param left the left subtree of this tree * @param right the right subtree of this tree */ public LinkedBinaryTree(T element, LinkedBinaryTree left, LinkedBinaryTree right) { root = new BinaryTreeNode(element); root.setLeft(left.root); root.setRight(right.root); } /** * Returns a reference to the element at the root * * @return a reference to the specified target * @throws EmptyCollectionException if the tree is empty */ @Override public T getRootElement() throws EmptyCollectionException { // TODO: Implement this. } /** * Returns a reference to the node at the root * * @return a reference to the specified node * @throws EmptyCollectionException if the tree is empty */ protected BinaryTreeNode getRootNode() throws EmptyCollectionException { // TODO: Implement this. } /** * Returns the left subtree of the root of this tree. * * @return a link to the left subtree fo the tree */ public LinkedBinaryTree getLeft() { // TODO: Implement this. } /** * Returns the right subtree of the root of this tree. * * @return a link to the right subtree of the tree */ public LinkedBinaryTree getRight() { // TODO: Implement this. } /** * Returns true if this binary tree is empty and false otherwise. * * @return true if this binary tree is empty, false otherwise */ @Override public boolean isEmpty() { return (root == null); }

/** * Returns the integer size of this tree. * * @return the integer size of the tree */ @Override public int size() { // TODO: Implement this. } /** * Returns the height of this tree. * * @return the height of the tree */ public int getHeight() { // TODO: Implement this. } /** * Returns the height of the specified node. * * @param node the node from which to calculate the height * @return the height of the tree */ private int height(BinaryTreeNode node) { // TODO: Implement this. } /** * Returns true if this tree contains an element that matches the * specified target element and false otherwise. * * @param targetElement the element being sought in this tree * @return true if the element in is this tree, false otherwise */ @Override public boolean contains(T targetElement) { // TODO: Implement this. } /** * Returns a reference to the specified target element if it is * found in this binary tree. Throws a ElementNotFoundException if * the specified target element is not found in the binary tree. * * @param targetElement the element being sought in this tree * @return a reference to the specified target * @throws ElementNotFoundException if the element is not in the tree */ public T find(T targetElement) throws ElementNotFoundException { BinaryTreeNode current = findNode(targetElement, root); if (current == null) throw new ElementNotFoundException("LinkedBinaryTree"); return (current.getElement()); }

/** * Returns a reference to the specified target element if it is * found in this binary tree. * * @param targetElement the element being sought in this tree * @param next the element to begin searching from */ private BinaryTreeNode findNode(T targetElement, BinaryTreeNode next) { if (next == null) return null; if (next.getElement().equals(targetElement)) return next; BinaryTreeNode temp = findNode(targetElement, next.getLeft()); if (temp == null) temp = findNode(targetElement, next.getRight()); return temp; } /** * Returns a string representation of this binary tree showing * the nodes in an inorder fashion. Each element will be * separated by a space. * * @return a string representation of this binary tree */ @Override public String toString() { // TODO: Implement this. }

/** * Returns an iterator over the elements in this tree using the * iteratorInOrder method * * @return an in order iterator over this binary tree */ @Override public Iterator iterator() { return iteratorInOrder(); } /** * Performs an inorder traversal on this binary tree by calling an * overloaded, recursive inorder method that starts with * the root. * * @return an in order iterator over this binary tree */ @Override public Iterator iteratorInOrder() { ArrayUnorderedList tempList = new ArrayUnorderedList(); inOrder(root, tempList); return new TreeIterator(tempList.iterator()); }

/** * Performs a recursive inorder traversal. * * @param node the node to be used as the root for this traversal * @param tempList the temporary list for use in this traversal */ protected void inOrder(BinaryTreeNode node, ArrayUnorderedList tempList) { if (node != null) { inOrder(node.getLeft(), tempList); tempList.addToRear(node.getElement()); inOrder(node.getRight(), tempList); } }

/** * Performs an preorder traversal on this binary tree by calling * an overloaded, recursive preorder method that starts with * the root. * * @return a pre order iterator over this tree */ @Override public Iterator iteratorPreOrder() { //TODO: Implement this. }

/** * Performs a recursive preorder traversal. * * @param node the node to be used as the root for this traversal * @param tempList the temporary list for use in this traversal */ protected void preOrder(BinaryTreeNode node, ArrayUnorderedList tempList) { //TODO: Implement this. }

/** * Performs an postorder traversal on this binary tree by calling * an overloaded, recursive postorder method that starts * with the root. * * @return a post order iterator over this tree */ @Override public Iterator iteratorPostOrder() { throw new UnsupportedOperationException("preOrder"); }

/** * Performs a recursive postorder traversal. * * @param node the node to be used as the root for this traversal * @param tempList the temporary list for use in this traversal */ protected void postOrder(BinaryTreeNode node, ArrayUnorderedList tempList) { //Not required. }

/** * Performs a levelorder traversal on this binary tree, using a * templist. * * @return a levelorder iterator over this binary tree */ @Override public Iterator iteratorLevelOrder() { ArrayUnorderedList> nodes = new ArrayUnorderedList(); ArrayUnorderedList tempList = new ArrayUnorderedList(); BinaryTreeNode current;

nodes.addToRear(root); while (!nodes.isEmpty()) { current = nodes.removeFirst(); if (current != null) { tempList.addToRear(current.getElement()); if (current.getLeft() != null) nodes.addToRear(current.getLeft()); if (current.getRight() != null) nodes.addToRear(current.getRight()); } else tempList.addToRear(null); } return new TreeIterator(tempList.iterator()); } /** * Inner class to represent an iterator over the elements of this tree */ private class TreeIterator implements Iterator { private int expectedModCount; private Iterator iter; /** * Sets up this iterator using the specified iterator. * * @param iter the list iterator created by a tree traversal */ public TreeIterator(Iterator iter) { this.iter = iter; expectedModCount = modCount; } /** * Returns true if this iterator has at least one more element * to deliver in the iteration. * * @return true if this iterator has at least one more element to deliver * in the iteration * @throws ConcurrentModificationException if the collection has changed * while the iterator is in use */ @Override public boolean hasNext() throws ConcurrentModificationException { if (!(modCount == expectedModCount)) throw new ConcurrentModificationException(); return (iter.hasNext()); } /** * Returns the next element in the iteration. If there are no * more elements in this iteration, a NoSuchElementException is * thrown. * * @return the next element in the iteration * @throws NoSuchElementException if the iterator is empty */ @Override public T next() throws NoSuchElementException { if (hasNext()) return (iter.next()); else throw new NoSuchElementException(); } /** * The remove operation is not supported. * * @throws UnsupportedOperationException if the remove operation is called */ @Override public void remove() { throw new UnsupportedOperationException(); } } }

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started