示例#1
0
  @Override
  public void run() {
    while (threadRunFlag) {
      if (queue.isEmpty()) {
        System.out.println("wait add new Data to upload thread!");
        synchronized (this) {
          try {
            wait();
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
        }

      } else {
        Entity entity = (Entity) queue.remove();
        System.out.println("current upload is:" + entity.toString());
        System.out.println("list size i s :" + queue.size());

        try {
          Thread.sleep(300);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
      }
    }
  }
示例#2
0
 public static void main(String[] args) {
   // TODO Auto-generated method stub
   // QueueNode<String> q = new QueueNode<String>("s");
   MyQueue<String> q = new MyQueue<String>();
   q.add("s");
   q.add("h");
   q.printLastFirst();
 }
示例#3
0
 /**
  * Returns an array of movies in the same order they they are in the queue but shares no data with
  * the actual queue.
  *
  * @pre
  * @post the array of movies will be returned in the order fo the queue
  * @return the array of movies
  */
 public Movie[] displayMoviesAtHome() {
   @SuppressWarnings("deprecation")
   MyQueue<Movie> cloneOfP = new MyQueue<Movie>(atHomeQueue);
   Movie[] movieList = new Movie[cloneOfP.getSize()];
   int i = 0;
   while (!cloneOfP.isEmpty()) {
     movieList[i] = cloneOfP.dequeue();
     i++;
   }
   return movieList;
 }
示例#4
0
 /**
  * This method takes a movie from the top of the queue by the priority it was added and send it to
  * the home queue.
  *
  * @pre the waiting queue must not be empty
  * @post the correct movie will be dequeued from the waiting queue and enqueued in the home queue
  */
 public void sendMovieHomeByPriority() {
   Movie m = waitingQueue.dequeueByPriority();
   if (m == null) {
     return;
   }
   atHomeQueue.enqueue(m);
 }
示例#5
0
  /**
   * return a COPY of solution. This should be : [x1,y1,x2,y2,x3,y3...] the coordinates of the
   * solution from start to end. Precondition : one of the solveXXX methods has already been called
   * (solveBFS OR solveDFS OR solveAStar) (otherwise an empty array is returned) Postcondition: the
   * correct solution is in the returned array
   */
  public int[] solutionCoordinates() {
    MyQueue<Integer> listOfInts = new MyQueue<Integer>();
    Node current = placesToGo.next();
    while (current != null) {
      listOfInts.enqueue(current.getValue()[0]);
      listOfInts.enqueue(current.getValue()[1]);
      current = current.getPrev();
    }

    solution = new int[listOfInts.size()];
    for (int i = 0; i < solution.length; i++) {
      solution[i] = listOfInts.dequeue();
    }

    return solution;
  }
示例#6
0
	for(int i = 0; i < 100; i++){
	    String s = "" + i;
	    s.push(s);
	    myS.push(s);
	    q.enqueue(s);
	    myQ.enqueue(s);
	}
示例#7
0
 public static void main(String[] args) {
   Solution34 sol34 = new Solution34();
   int[] values = new int[] {11, 34, 2, 6, 23, 5, 10};
   System.out.print("Create the queue: ");
   MyQueue queue = sol34.new MyQueue(values);
   sol34.printOutQueue(values);
   System.out.print("Remove three elements: ");
   for (int i = 0; i < 3; i++) {
     System.out.print(queue.remove() + "  ");
   }
   System.out.println();
   System.out.print("Peek the next element: ");
   System.out.print(queue.peek());
   System.out.println();
   System.out.print("Add one element 0 and print out all current queue: ");
   queue.add(0);
   while (!queue.isEmpty()) {
     System.out.print(queue.remove() + "  ");
   }
 }
示例#8
0
  public static void main(String[] args) {
    MyQueue<Integer> my_queue = new MyQueue<Integer>();

    // Let's test our code against a "real" queue
    Queue<Integer> test_queue = new LinkedList<Integer>();

    for (int i = 0; i < 100; i++) {
      int choice = AssortedMethods.randomIntInRange(0, 10);
      if (choice <= 5) { // enqueue
        int element = AssortedMethods.randomIntInRange(1, 10);
        test_queue.add(element);
        my_queue.add(element);
        System.out.println("Enqueued " + element);
      } else if (test_queue.size() > 0) {
        int top1 = test_queue.remove();
        int top2 = my_queue.remove();
        if (top1 != top2) { // Check for error
          System.out.println("******* FAILURE - DIFFERENT TOPS: " + top1 + ", " + top2);
        }
        System.out.println("Dequeued " + top1);
      }

      if (test_queue.size() == my_queue.size()) {
        if (test_queue.size() > 0 && test_queue.peek() != my_queue.peek()) {
          System.out.println(
              "******* FAILURE - DIFFERENT TOPS: "
                  + test_queue.peek()
                  + ", "
                  + my_queue.peek()
                  + " ******");
        }
      } else {
        System.out.println("******* FAILURE - DIFFERENT SIZES ******");
      }
    }
  }
示例#9
0
 public void addData(Entity entity) {
   queue.put(entity);
   synchronized (this) {
     notify();
   }
 }
示例#10
0
 /**
  * Dequeues from the atHome queue in FIFO order and returns the movie.
  *
  * @return the movie dequeued
  */
 public Movie returnMovie() {
   return atHomeQueue.dequeue();
 }
  /** @param args the command line arguments */
  public static void main(String[] args) {
    // 1.1
    String testStr1 = "World"; // True
    String testStr2 = "Hello"; // False
    System.out.println("===== 1.1 =====");
    System.out.println("Using hash map...");
    System.out.print(testStr1 + ": ");
    System.out.println(StringAlgorithms.hasAllUniqueChars(testStr1));
    System.out.print(testStr2 + ": ");
    System.out.println(StringAlgorithms.hasAllUniqueChars(testStr2));
    System.out.println("Using no data structures...");
    System.out.print(testStr1 + ": ");
    System.out.println(StringAlgorithms.hasAllUniqueCharsPrimitive(testStr1));
    System.out.print(testStr2 + ": ");
    System.out.println(StringAlgorithms.hasAllUniqueCharsPrimitive(testStr2));
    System.out.println();

    // 1.2
    testStr1 = "toastyfresh";
    testStr2 = "oatsyetfhrs";
    String testStr3 = "hello";
    String testStr4 = "helloworlds";
    System.out.println("===== 1.2 =====");
    System.out.println(testStr1 + " and " + testStr2 + " permutation?");
    System.out.println(StringAlgorithms.isPermutation(testStr1, testStr2));
    System.out.println(testStr2 + " and " + testStr3 + " permutation?");
    System.out.println(StringAlgorithms.isPermutation(testStr2, testStr3));
    System.out.println(testStr1 + " and " + testStr4 + " permutation?");
    System.out.println(StringAlgorithms.isPermutation(testStr1, testStr4));
    System.out.println();

    // 1.3
    char[] testCharArray = {
      'M', 'r', ' ', 'J', 'o', 'h', 'n', ' ', 'S', 'm', 'i', 't', 'h', ' ', ' ', ' ', ' '
    };
    int size = 13;
    String inputString = new String(testCharArray);
    String outputString = StringAlgorithms.urlify(testCharArray, size);
    System.out.println("===== 1.3 =====");
    System.out.println("Input:  \"" + inputString + "\"");
    System.out.println("Output: \"" + outputString + "\"");
    System.out.println();

    // 1.4
    System.out.println("===== 1.4 =====");
    inputString = "Tact Coa";
    boolean output = StringAlgorithms.palindromePermutation(inputString);
    System.out.println("Input:  \"" + inputString + "\"");
    System.out.println("Output: " + output);
    inputString = "Poop soup";
    output = StringAlgorithms.palindromePermutation(inputString);
    System.out.println("Input:  \"" + inputString + "\"");
    System.out.println("Output: " + output);
    System.out.println();

    // 1.5
    System.out.println("===== 1.5 =====");
    String inputString1 = "pale";
    String inputString2 = "ple";
    output = StringAlgorithms.oneAway(inputString1, inputString2);
    System.out.println(inputString1 + ", " + inputString2 + "\t-> " + output);
    inputString1 = "pales";
    inputString2 = "pale";
    output = StringAlgorithms.oneAway(inputString1, inputString2);
    System.out.println(inputString1 + ", " + inputString2 + "\t-> " + output);
    inputString1 = "pale";
    inputString2 = "bale";
    output = StringAlgorithms.oneAway(inputString1, inputString2);
    System.out.println(inputString1 + ", " + inputString2 + "\t-> " + output);
    inputString1 = "pale";
    inputString2 = "bake";
    output = StringAlgorithms.oneAway(inputString1, inputString2);
    System.out.println(inputString1 + ", " + inputString2 + "\t-> " + output);
    System.out.println();

    // 1.6
    System.out.println("===== 1.6 =====");
    inputString = "aabcccccaaa";
    outputString = StringAlgorithms.stringCompression(inputString);
    System.out.println("input: " + inputString);
    System.out.println("output: " + outputString);
    System.out.println();

    // 1.7
    System.out.println("===== 1.7 =====");
    int[][] inputMatrix = {
      {20, 18, 22, 20},
      {18, 20, 18, 21},
      {16, 18, 16, 20},
      {25, 24, 22, 24},
    };
    System.out.println("---- Input ----");
    for (int[] inputMatrix1 : inputMatrix) {
      for (int j = 0; j < inputMatrix1.length; j++) {
        System.out.print(inputMatrix1[j] + " ");
      }
      System.out.println();
    }
    int[][] outputMatrix = ArrayAlgorithms.rotateMatrix(inputMatrix);
    System.out.println("--- Output ----");
    for (int[] outputMatrix1 : outputMatrix) {
      for (int j = 0; j < outputMatrix1.length; j++) {
        System.out.print(outputMatrix1[j] + " ");
      }
      System.out.println();
    }
    System.out.println();

    // 1.8
    System.out.println("===== 1.8 =====");
    int[][] zeroMatrix = {
      {0, 1, 1, 1, 0},
      {1, 1, 1, 1, 1},
      {1, 1, 1, 1, 1},
      {0, 1, 1, 1, 0}
    };
    System.out.println("---- Input ----");
    for (int[] inputMatrix1 : zeroMatrix) {
      for (int j = 0; j < inputMatrix1.length; j++) {
        System.out.print(inputMatrix1[j] + " ");
      }
      System.out.println();
    }
    ArrayAlgorithms.zeroMatrix(zeroMatrix);
    System.out.println("---- Output ----");
    for (int[] inputMatrix1 : zeroMatrix) {
      for (int j = 0; j < inputMatrix1.length; j++) {
        System.out.print(inputMatrix1[j] + " ");
      }
      System.out.println();
    }
    System.out.println();

    // 1.9
    System.out.println("===== 1.9 =====");
    inputString1 = "waterbottle";
    inputString2 = "erbottlewat";
    output = StringAlgorithms.stringRotation(inputString1, inputString2);
    System.out.println("s1: " + inputString1);
    System.out.println("s2: " + inputString2);
    System.out.println("Is a rotation: " + output);
    System.out.println();

    // 2.1
    System.out.println("===== 2.1 =====");
    LinkedList inputLinkedList = new LinkedList();
    inputLinkedList.add(1);
    inputLinkedList.add(12);
    inputLinkedList.add(123);
    inputLinkedList.add(12);
    inputLinkedList.add(12);
    inputLinkedList.add(11);
    inputLinkedList.add(1);
    inputLinkedList.add(1234);
    inputLinkedList.add(14);
    inputLinkedList.add(123);
    LinkedListAlgorithms.removeDups(inputLinkedList);
    ListIterator iterator = inputLinkedList.listIterator();
    while (iterator.hasNext()) {
      System.out.print(iterator.next() + ", ");
    }
    System.out.println();

    inputLinkedList = new LinkedList();
    inputLinkedList.add(1);
    inputLinkedList.add(12);
    inputLinkedList.add(123);
    inputLinkedList.add(12);
    inputLinkedList.add(12);
    inputLinkedList.add(11);
    inputLinkedList.add(1);
    inputLinkedList.add(1234);
    inputLinkedList.add(14);
    inputLinkedList.add(123);
    LinkedListAlgorithms.removeDupsNoBuffer(inputLinkedList);
    iterator = inputLinkedList.listIterator();
    while (iterator.hasNext()) {
      System.out.print(iterator.next() + ", ");
    }
    System.out.println();
    System.out.println();

    // 2.2
    System.out.println("===== 2.2 =====");
    SinglyLinkedList inLink = new SinglyLinkedList();
    inLink.add(1);
    inLink.add(12);
    inLink.add(123);
    inLink.add(12);
    inLink.add(12);
    inLink.add(11);
    inLink.add(1);
    inLink.add(1234);
    inLink.add(14);
    inLink.add(123);
    SinglyLinkedList.Node outNode = LinkedListAlgorithms.kToLast(inLink, 4);
    System.out.println(outNode.getData());
    System.out.println();

    // 2.3
    System.out.println("===== 2.3 =====");
    System.out.println(inLink.toString());

    System.out.println("Deleting node " + outNode.toString() + "...");
    LinkedListAlgorithms.deleteMiddleNode(inLink, outNode);
    System.out.println(inLink.toString());
    System.out.println();

    // 2.4
    System.out.println("===== 2.4 =====");
    System.out.println(inLink.toString());
    int partVal = 13;
    System.out.println("Partitioning list about " + partVal + "...");
    LinkedListAlgorithms.partition(inLink, partVal);
    System.out.println(inLink.toString());
    System.out.println();

    // 2.5
    SinglyLinkedList aLinkedNumber = new SinglyLinkedList();
    aLinkedNumber.add(7);
    aLinkedNumber.add(1);
    aLinkedNumber.add(6);
    SinglyLinkedList bLinkedNumber = new SinglyLinkedList();
    bLinkedNumber.add(5);
    bLinkedNumber.add(9);
    bLinkedNumber.add(2);
    bLinkedNumber.add(1);
    SinglyLinkedList linkSum = LinkedListAlgorithms.sumLists(aLinkedNumber, bLinkedNumber);
    System.out.println("  " + aLinkedNumber.toString());
    System.out.println("+ " + bLinkedNumber.toString());
    System.out.println("  ==============");
    System.out.println("  " + linkSum.toString());
    System.out.println();

    // 2.6
    System.out.println("===== 2.6 =====");
    SinglyLinkedList palindromeLink = new SinglyLinkedList();
    palindromeLink.add(5);
    palindromeLink.add(7);
    palindromeLink.add(8);
    palindromeLink.add(9);
    palindromeLink.add(8);
    palindromeLink.add(7);
    palindromeLink.add(5);
    output = LinkedListAlgorithms.palindrome(linkSum);
    System.out.println("Input: " + linkSum.toString());
    System.out.println("Palindrome: " + output);
    output = LinkedListAlgorithms.palindrome(palindromeLink);
    System.out.println("Input: " + palindromeLink.toString());
    System.out.println("Palindrome: " + output);
    System.out.println();

    // 2.7
    System.out.println("===== 2.7 =====");
    SinglyLinkedList.Node palindromeFirst = palindromeLink.first();
    SinglyLinkedList palindromeCopy = new SinglyLinkedList(palindromeFirst);

    palindromeLink.addFront(22);
    palindromeLink.addFront(53);
    palindromeCopy.addFront(23);
    SinglyLinkedList.Node outputNode =
        LinkedListAlgorithms.intersection(palindromeLink, palindromeCopy);
    System.out.println("Input: " + palindromeLink.toString());
    System.out.println("Input: " + palindromeCopy.toString());
    if (outputNode == null) {
      System.out.println("Output: false");
    } else {
      System.out.println("Output: " + outputNode.toString());
    }

    outputNode = LinkedListAlgorithms.intersection(palindromeLink, linkSum);
    System.out.println("Input: " + palindromeLink.toString());
    System.out.println("Input: " + linkSum.toString());
    if (outputNode == null) {
      System.out.println("Output: false");
    } else {
      System.out.println("Output: " + outputNode.toString());
    }

    System.out.println();

    // 2.8
    System.out.println("===== 2.8 =====");
    SinglyLinkedList circularLinked = new SinglyLinkedList();
    circularLinked.add(2);
    circularLinked.add(4);
    circularLinked.add(6);
    circularLinked.add(8);
    circularLinked.add(10);
    circularLinked.add(12);
    circularLinked.add(14);
    SinglyLinkedList.Node current = circularLinked.first();
    current = current.getNext();
    current = current.getNext();
    SinglyLinkedList.Node last = circularLinked.last();
    last.setNext(current);

    outputNode = LinkedListAlgorithms.loopDetection(circularLinked);
    System.out.println("Circular Node: " + outputNode.toString());
    System.out.println();

    // 3.2
    StackMin minStack = new StackMin(100);
    minStack.push(11);
    minStack.push(16);
    minStack.push(9);
    minStack.push(99);
    minStack.push(42);
    minStack.push(3);
    minStack.push(22);
    int outVal = minStack.peek();
    System.out.println("Peeking... " + outVal);
    outVal = minStack.pop();
    System.out.println("Popping... " + outVal);
    outVal = minStack.min();
    System.out.println("Minimum: " + outVal);
    outVal = minStack.pop();
    System.out.println("Popping... " + outVal);
    outVal = minStack.min();
    System.out.println("Minimum: " + outVal);
    outVal = minStack.pop();
    System.out.println("Popping... " + outVal);
    outVal = minStack.min();
    System.out.println("Minimum: " + outVal);
    outVal = minStack.pop();
    System.out.println("Popping... " + outVal);
    outVal = minStack.min();
    System.out.println("Minimum: " + outVal);
    outVal = minStack.pop();
    System.out.println("Popping... " + outVal);
    outVal = minStack.min();
    System.out.println("Minimum: " + outVal);
    outVal = minStack.pop();
    System.out.println("Popping... " + outVal);
    outVal = minStack.min();
    System.out.println("Minimum: " + outVal);
    outVal = minStack.pop();
    System.out.println();

    // 3.3
    // 5 Stacks each of capacity 5
    System.out.println("===== 3.3 =====");
    SetOfStacks stackSet = new SetOfStacks(5, 5);
    stackSet.push(17);
    stackSet.push(16);
    stackSet.push(15);
    stackSet.push(14);
    stackSet.push(13);
    stackSet.push(12);
    stackSet.push(11);
    stackSet.push(10);
    stackSet.push(9);
    stackSet.push(8);
    stackSet.push(7);
    stackSet.push(6);
    stackSet.push(5);
    stackSet.push(4);
    stackSet.push(3);
    stackSet.push(2);
    stackSet.push(1);
    System.out.println("Popped: " + stackSet.popAt(1));

    System.out.println("Popped: " + stackSet.pop());
    System.out.println("Popped: " + stackSet.pop());
    System.out.println("Popped: " + stackSet.pop());
    System.out.println("Popped: " + stackSet.pop());
    System.out.println("Popped: " + stackSet.pop());
    System.out.println("Popped: " + stackSet.pop());
    System.out.println("Popped: " + stackSet.pop());
    System.out.println("Popped: " + stackSet.pop());
    System.out.println("Popped: " + stackSet.pop());
    System.out.println("Popped: " + stackSet.pop());
    System.out.println("Popped: " + stackSet.pop());
    System.out.println("Popped: " + stackSet.pop());
    System.out.println("Popped: " + stackSet.pop());
    System.out.println("Popped: " + stackSet.pop());
    System.out.println("Popped: " + stackSet.pop());
    System.out.println("Popped: " + stackSet.pop());
    System.out.println();

    System.out.println("===== 3.4 =====");
    MyQueue queue = new MyQueue(100);
    queue.push(1);
    queue.push(2);
    queue.push(3);
    System.out.println("Popped: " + queue.pop());
    System.out.println("Popped: " + queue.pop());
    System.out.println("Popped: " + queue.pop());
    System.out.println();

    System.out.println("===== 3.5 =====");
    Stack sortableStack = new Stack(100);
    sortableStack.push(12);
    sortableStack.push(21);
    sortableStack.push(4);
    sortableStack.push(16);
    sortableStack.push(17);
    sortableStack.push(8);
    sortableStack.push(10);
    sortableStack.push(15);
    sortableStack.push(54);
    sortableStack.push(12);

    StackAlgorithms.sortStack(sortableStack);
    System.out.println("Popped: " + sortableStack.pop());
    System.out.println("Popped: " + sortableStack.pop());
    System.out.println("Popped: " + sortableStack.pop());
    System.out.println("Popped: " + sortableStack.pop());
    System.out.println("Popped: " + sortableStack.pop());
    System.out.println("Popped: " + sortableStack.pop());
    System.out.println("Popped: " + sortableStack.pop());
    System.out.println("Popped: " + sortableStack.pop());
    System.out.println("Popped: " + sortableStack.pop());
    System.out.println("Popped: " + sortableStack.pop());
    System.out.println();

    System.out.println("===== 3.6 =====");
    AnimalShelterQueue animalShelter = new AnimalShelterQueue();
    animalShelter.enqueue(new Dog());
    animalShelter.enqueue(new Cat());
    animalShelter.enqueue(new Dog());
    animalShelter.enqueue(new Cat());
    animalShelter.enqueue(new Dog());
    animalShelter.enqueue(new Cat());
    animalShelter.enqueue(new Dog());
    animalShelter.enqueue(new Cat());
    animalShelter.enqueue(new Dog());
    animalShelter.enqueue(new Cat());
    animalShelter.enqueue(new Dog());
    animalShelter.enqueue(new Cat());
    animalShelter.enqueue(new Dog());
    animalShelter.enqueue(new Cat());
    System.out.println(animalShelter.dequeueAny());
    System.out.println(animalShelter.dequeueAny());
    System.out.println(animalShelter.dequeueAny());
    System.out.println(animalShelter.dequeueAny());
    System.out.println(animalShelter.dequeueCat());
    System.out.println(animalShelter.dequeueCat());
    System.out.println(animalShelter.dequeueCat());
    System.out.println();

    System.out.println("===== 4.1 =====");
    DirectedGraph diGraph = new DirectedGraph();
    DirectedGraph.Node node1 = new DirectedGraph.Node(1);
    DirectedGraph.Node node2 = new DirectedGraph.Node(2);
    DirectedGraph.Node node3 = new DirectedGraph.Node(3);
    DirectedGraph.Node node4 = new DirectedGraph.Node(4);
    DirectedGraph.Node node5 = new DirectedGraph.Node(5);
    DirectedGraph.Node node6 = new DirectedGraph.Node(6);
    DirectedGraph.Node node7 = new DirectedGraph.Node(7);
    DirectedGraph.Node node8 = new DirectedGraph.Node(8);
    DirectedGraph.Node node9 = new DirectedGraph.Node(9);
    DirectedGraph.Node node10 = new DirectedGraph.Node(10);
    DirectedGraph.Node node11 = new DirectedGraph.Node(11);
    DirectedGraph.Node node12 = new DirectedGraph.Node(12);
    DirectedGraph.Node node13 = new DirectedGraph.Node(13);
    DirectedGraph.Node node14 = new DirectedGraph.Node(14);
    diGraph.addAdjacency(node1, node2);
    diGraph.addAdjacency(node2, node3, node4);
    diGraph.addAdjacency(node3, node5);
    diGraph.addAdjacency(node4, node6);
    diGraph.addAdjacency(node6, node7, node8, node9);
    diGraph.addAdjacency(node9, node10);
    diGraph.addAdjacency(node11, node12);
    diGraph.addAdjacency(node12, node13);
    diGraph.addAdjacency(node13, node14);
    diGraph.addAdjacency(node14, node7);

    System.out.println("Directed Graph: \n" + diGraph);
    output = diGraph.routeBetweenNodesExists(node1, node9);
    System.out.println("Route between " + node1 + " and " + node9 + " exists: " + output);
    output = diGraph.routeBetweenNodesExists(node11, node6);
    System.out.println("Route between " + node11 + " and " + node6 + " exists: " + output);
    System.out.println();

    System.out.println("===== 4.2 =====");
    int[] inputArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
    BinaryTree searchTreeOutput;
    searchTreeOutput = TreeAlgorithms.minimalTree(inputArray);
    System.out.println(searchTreeOutput);
    System.out.println();

    System.out.println("===== 4.3 =====");
    BinaryTree treeOutput;
    treeOutput = TreeAlgorithms.minimalTree(inputArray);
    List<LinkedList> outputList = treeOutput.linkedListsByDepth();
    System.out.println(outputList);
    System.out.println();

    System.out.println("===== 4.4 =====");
    BinaryTree.Node biNode0 = new BinaryTree.Node(0);
    BinaryTree.Node biNode1 = new BinaryTree.Node(1);
    BinaryTree.Node biNode2 = new BinaryTree.Node(2);
    BinaryTree.Node biNode3 = new BinaryTree.Node(3);
    BinaryTree.Node biNode4 = new BinaryTree.Node(4);
    BinaryTree.Node biNode5 = new BinaryTree.Node(5);
    BinaryTree.Node biNode6 = new BinaryTree.Node(6);
    BinaryTree.Node biNode7 = new BinaryTree.Node(7);
    BinaryTree.Node biNode8 = new BinaryTree.Node(8);
    BinaryTree.Node biNode9 = new BinaryTree.Node(9);
    BinaryTree.Node biNode10 = new BinaryTree.Node(10);
    BinaryTree.Node biNode11 = new BinaryTree.Node(11);
    biNode7.addLeftChild(biNode3);
    biNode3.addLeftChild(biNode1);
    biNode1.addLeftChild(biNode0);
    biNode1.addRightChild(biNode2);
    biNode3.addRightChild(biNode5);
    biNode5.addLeftChild(biNode4);
    biNode5.addRightChild(biNode6);
    biNode7.addRightChild(biNode10);
    biNode10.addLeftChild(biNode8);
    biNode8.addLeftChild(biNode9);

    output = treeOutput.isBalanced();
    System.out.println("              (7)             ");
    System.out.println("      (3)             (11)    ");
    System.out.println("  (1)     (5)     (9)     (12)");
    System.out.println("(0) (2) (4) (6) (8) (10)      ");
    System.out.println("Is balanced: " + output);
    System.out.println();

    BinaryTree unbalancedTree = new BinaryTree(biNode7);
    output = unbalancedTree.isBalanced();
    System.out.println("              (7)             ");
    System.out.println("      (3)             (10)    ");
    System.out.println("  (1)     (5)     (8)         ");
    System.out.println("(0) (2) (4) (6) (9)           ");
    System.out.println("Is balanced: " + output);
    System.out.println();

    System.out.println("===== 4.5 =====");
    output = treeOutput.isBinarySearchTree();
    System.out.println("              (7)             ");
    System.out.println("      (3)             (11)    ");
    System.out.println("  (1)     (5)     (9)     (12)");
    System.out.println("(0) (2) (4) (6) (8) (10)      ");
    System.out.println("Is BST: " + output);
    System.out.println();
    output = unbalancedTree.isBinarySearchTree();
    System.out.println("              (7)             ");
    System.out.println("      (3)             (10)    ");
    System.out.println("  (1)     (5)     (8)         ");
    System.out.println("(0) (2) (4) (6) (9)           ");
    System.out.println("Is BST: " + output);
    System.out.println();

    System.out.println("===== 4.6 =====");
    BinarySearchTree.Node bstNode0 = new BinarySearchTree.Node(0);
    BinarySearchTree.Node bstNode1 = new BinarySearchTree.Node(1);
    BinarySearchTree.Node bstNode2 = new BinarySearchTree.Node(2);
    BinarySearchTree.Node bstNode3 = new BinarySearchTree.Node(3);
    BinarySearchTree.Node bstNode4 = new BinarySearchTree.Node(4);
    BinarySearchTree.Node bstNode5 = new BinarySearchTree.Node(5);
    BinarySearchTree.Node bstNode6 = new BinarySearchTree.Node(6);
    BinarySearchTree.Node bstNode7 = new BinarySearchTree.Node(7);
    BinarySearchTree.Node bstNode8 = new BinarySearchTree.Node(8);
    BinarySearchTree.Node bstNode9 = new BinarySearchTree.Node(9);
    BinarySearchTree.Node bstNode10 = new BinarySearchTree.Node(10);
    BinarySearchTree.Node bstNode11 = new BinarySearchTree.Node(11);

    bstNode1.addLeftChild(bstNode0);
    bstNode1.addRightChild(bstNode2);
    bstNode3.addLeftChild(bstNode1);
    bstNode3.addRightChild(bstNode5);
    bstNode5.addLeftChild(bstNode4);
    bstNode5.addRightChild(bstNode6);
    bstNode7.addLeftChild(bstNode3);
    bstNode7.addRightChild(bstNode11);
    bstNode11.addLeftChild(bstNode9);
    bstNode9.addLeftChild(bstNode8);
    bstNode9.addRightChild(bstNode10);

    System.out.println(bstNode0);
    System.out.println(bstNode0.getNext());
    System.out.println(bstNode1.getNext());
    System.out.println(bstNode2.getNext());
    System.out.println(bstNode3.getNext());
    System.out.println(bstNode4.getNext());
    System.out.println(bstNode5.getNext());
    System.out.println(bstNode6.getNext());
    System.out.println(bstNode7.getNext());
    System.out.println(bstNode8.getNext());
    System.out.println(bstNode9.getNext());
    System.out.println(bstNode10.getNext());
    System.out.println();

    System.out.println("===== 4.7 =====");
    // 4.7 Build Order: You are given a list of projects and a list of
    // dependencies (which is a list of pairs of projects where the first
    // project is dependent on the second project). All of a project's
    // dependencies must be built before the project is. Find a build order
    // that will allow the projects to be built. If there is no valid build
    // order, return an error.
    // EXAMPLE:
    // Input:
    //      projects: a, b, c, d, e, f
    //      dependencies: (d, a), (b, f), (d, b), (a, f), (c, d)
    // Output: f, e, a, b, d, c
    List<Character> listOfProjects = new ArrayList<>();
    Character[] projectArray = {'a', 'b', 'c', 'd', 'e', 'f'};
    listOfProjects.addAll(Arrays.asList(projectArray));

    List<Tuple<Character>> listOfDependencies = new ArrayList<>();
    listOfDependencies.add(new Tuple('d', 'a'));
    listOfDependencies.add(new Tuple('b', 'f'));
    listOfDependencies.add(new Tuple('d', 'b'));
    listOfDependencies.add(new Tuple('a', 'f'));
    listOfDependencies.add(new Tuple('c', 'd'));
  }
示例#12
0
 public boolean hasNext() {
   return frontier.peek() != null;
 }
示例#13
0
 public T next() {
   return frontier.dequeue();
 }
示例#14
0
 public void add(T element) {
   frontier.enqueue(element);
 }