Classwork:
Stack Class and its applications.
Exercise 3 – discuss it in Classroom Salon
Homework:
Exercises 4 and 7
Implement the Queue Class
Classwork:
Stack Class and its applications.
Exercise 3 – discuss it in Classroom Salon
Homework:
Exercises 4 and 7
Implement the Queue Class
September 29th, 2015
Binary Trees
Videos from mycodeschool.com
Binary Tree: Level Order Traversal
Binary Tree Traversal: Preorder, Inorder, Postorder
Delete a node from Binary Search Tree
Inorder Successor in a binary search tree
Check if a binary tree is binary search tree or not
Homework:
1. Draw the binary search tree that results from adding the following integers (34 45 3 87 65 32 1 12 17).
2. Look into the BinarySearchTreeADT in the book.
3. Read Implementing Binary Search Trees: With Links
September 25th, 2015
Trees
Tree Types
(a) and (c)–are complete
Only (c) in Figure full
Homework:
Visit edmodo.com to answer the following questions
1. What is a tree?
2. What is a node?
3. What is the root of the tree?
4. What is a leaf?
5. What is an internal node?
6. Define the height of a tree.
7. Define the level of a node.
Read Tree implementation with arrays.
A Queue ADT
A queue is a linear collection whose elements are added on one end and removed from the other. Therefore, we say that queue elements are processed in a first in, first out (FIFO) manner. Elements are removed from a queue in the same order in which they are placed on the queue.
public interface QueueADT
{
// Adds one element to the rear of the queue
public void enqueue (T element);
// Removes and returns the element at the front of the queue
public T dequeue();
// Returns without removing the element at the front of the queue
public T first();
// Returns true if the queue contains no elements
public boolean isEmpty();
// Returns the number of elements in the queue
public int size();
// Returns a string representation of the queue
public String toString();
}
Assignment: Using the QueueADT interface, implement the Queue ADT according to the API below:
■ Queue elements are processed in a FIFO manner—the first element in is the first element out.
■ A queue is a convenient collection for storing a repeating code key.
■ Simulations are often implemented using queues to represent waiting lines.
■ A linked implementation of a queue is facilitated by references to the first and last elements of the linked list.
■ The enqueue and dequeue operations work on opposite ends of the collec- tion.
■ Because queue operations modify both ends of the collection, fixing one end at index 0 requires that elements be shifted.
■ The shifting of elements in a noncircular array implementation creates an O(n) complexity.
■ Treating arrays as circular eliminates the need to shift elements in an array queue implementation.
Assignments:
1. Create a system using a stack and a queue to test whether a given string is a palindrome (i.e., the characters read the same forward or backward).
2. Create a system to simulate vehicles at an intersection. Assume that there is one lane going in each of four directions, with stoplights facing each direction. Vary the arrival average of vehicles in each direction and the frequency of the light changes to view the “behavior” of the intersection.
Classwork/Homework:
Data Structures: Stacks and Queues
Stacks. A stack is a collection that is based on the last-in-first-out (LIFO) policy. By tradition, we name the stack insert method push() and the stack remove operation pop(). We also include a method to test whether the stack is empty, as indicated in the following API:
Video Lectures :
Stacks and Queues
Clients
Assignment:
Implement the ArrayStackOfIntegers ADT for Integers using arrays.
Other members that you need to implement:
import java.util.Iterator; import java.util.NoSuchElementException; public class ArrayStackOfIntegers implements Iterable { private Integers[] items; // holds the items private int n; // number of items in stack public ArrayStackOfIntegers(int capacity) { items = (Integer[]) new Object[capacity]; } public boolean isEmpty() { ---- } public boolean isFull() { ---- } public void push(Integer item) { ---- } public Integer pop() { } public Iterator iterator() { return new ReverseArrayIterator(); } // an iterator, doesn't implement remove() since it's optional private class ReverseArrayIterator implements Iterator { ---- public void remove() {} } }
The files in this site are cleaned up a bit here.
Use the ArrayStackOfIntegers ADT to work on these assignments:
ArrayStackOfIntegers ADT – Calculator
Design and implement a client to calculate the following postfix expression: 8 4 -3 * 1 5 + / *
ArrayStackOfIntegers ADT – Enhanced Calculator
StackCalculatorEnhanced
Dragon curve. Use the program, Dragon.java that reads in a command-line parameter N and plots the order N dragon curve using turtle graphics. The dragon curve was first discovered by three NASA physicists (John E. Heighway, Bruce A. Banks, and William G. Harter) and later popularized by Martin Gardner in Scientific American (March and April 1967) and Michael Crichton in Jurassic Park.
Describe in a short paragraph how the program works.
Classwork:
1. Create a folder to hold your projects for this class, Algorithms.
2. Create a folder for ADTs.
3. Create a project in ADTs with the classes presented in the pdf above. Ensure that your project contains the files needed to test your classes. Check edmodo.com for due dates.
4. Write your own main method to test your classes. Ensure you have good documentation.
5. Submit your work to edmodo.com.
Guidelines to submit your work:
Every program has to have a header:
Input and output:
Using Turtle ADT
Seymour Aubrey Papert (February 29, 1928 – July 31, 2016)
was a South African-born American mathematician, computer scientist, and educator, who spent most of his career teaching and researching at MIT.[1] He was one of the pioneers of artificial intelligence, and of the constructionist movement in education. He was co-inventor, with Wally Feurzeig, of the Logo programming language.
Logo
Papert used Piaget’s work in his development of the Logo programming language while at MIT. He created Logo as a tool to improve the way children think and solve problems. A small mobile robot called the “Logo Turtle” was developed, and children were shown how to use it to solve simple problems in an environment of play. A main purpose of the Logo Foundation research group is to strengthen the ability to learn knowledge.[7] Papert insisted a simple language or program that children can learn—like Logo—can also have advanced functionality for expert users.
From Wikipedia
Assignment:
Regular n-gons. Ngon.java takes a command-line argument n and draws a regular n-gon using turtle graphics or the Std library. By taking n to a sufficiently large value, we obtain a good approximation to a circle. Show your images as n increases. Implement an algorithm to find the smallest value for n to get the best approximation to a circle.
Document clearly your proof.
NOTE: only show few images
Homework:
Set up your working environment in your own computer.
Assignment:
Recursive graphics. Koch.java takes a command-line argument n and draws a Koch curve of order n. A Koch curve of order order 0 is a line segment. To form a Koch curve of order n:
Draw a Koch curve of order n−1
Rotate 60° counterclockwise
Draw a Koch curve of order n−1
Rotate 120° clockwise
Draw a Koch curve of order n−1
Rotate 60° counterclockwise
Draw a Koch curve of order n−1
Below are the Koch curves of order 0, 1, 2, and 3.
As the order of the curve increases, how is the area between the curve and the “x-axis” affected? Modify the Koch ADT to include a method that implements the area computation to assist you in answering the question.
Document clearly your proof.