Download Computer Science II

yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
CS 240 Computer Science II Exam 3
Page 1
Spring ‘03
April 2, 2003
1. Linked lists.
a) Fill in the Java inner class below to support the implementation of a linked list in which each node holds
one String and a next reference.
[5 pts]
private class Node {
private _______ info;
private _______ next;
private Node(String s){
info = _______;
_________ = ________;
b) Indicate how the head pointer instance variable of the linked list is declared and start as the empty list.
The linked list starts with a dummy head node.
[4 pts]
___________ head = new _______________________;
c) Draw a box and pointer diagram to represent the ordered list (“cat”, “dog”, “fish”) as pointed to by
head. The linked list starts with a dummy head node.
[5 pts]
d) Fill in the blanks so that Java code that would add the value “ant” as a new first node of this ordered list.
[5 pts]
Node temp = new Node (“ant”);
temp. _______ = _______ . ________;
head.______ = ______ ;
2. Fill in the code below to complete the enqueue operation using a singly linked list implementation (no dummy
head node).
[5 pts]
public void enqueue(Object item){
if (item == null)
throw new IllegalArgumentException
("Trying to insert null onto the queue");
Node node = new Node (______);
if (size == 0){
head = _________;
} else {
tail._______ = _______;
tail = node;
CS 240 Computer Science II Exam 3
Page 2
3. Give the time complexities, O(1) or O(n) for each of the operations of the implied data structure that are
implemented as a linked list.
_________ pop()
[8 pts]
_________ insert(item) //into a sorted list
_________ dequeue()
_________ insert(item) //unsorted list
_________ enqueue(item)
_________ getNextItem()
_________ push(item)
_________ isThere(item)
4. Fill in the blanks to implement a recursive binary search algorithm. Assume there is a public helper function that
calls the recursive function:
public int binarySearch(Comparable key){
return binarySearch(key, 0, vec.length – 1);
[10 pts]
private int binarySearch(Comparable key, int lo, int hi){
if( ____ > ____ ) {
return -1; //not found
} else {
int mid = ____________;
int comp = vec[mid].compareTo(key);
if(comp > 0){
return binarySearch(key, ________,________);
} else if(comp ____ 0){
return binarySearch(key, ________,________);
} else { // found it
return ________ ;
5. A recursive definition for determining the greatest common denominator is credited to Euclid. For example,
the GCD of 16 and 12 is 4.
If b==0 then the GCD(a,b) = a,
otherwise the GCD (a,b) = GCD (b, a%b) //% is modulus
[10 pts]
Write this recursive Java function to implement the calculation of the greatest common denomionator.
public static int GCD(int a, int b){
CS 240 Computer Science II Exam 3
Page 3
6. Trees.
[10 pts]
a) Assume the root is at level 0. What is the level of node F? ____
b) Circle the largest subtree that is a binary tree.
c) How many leaves are there in the whole tree? _____
d) If each node could have at most three children, how many nodes total
could be stored in this tree without adding any more levels? ______
e) List the ancestors of node H ______________________
/ \
/ \
/ \
f) List the descendants of node C. _______________________
g) Draw the conversion of this general tree as a binary tree (left child as
first child of the general tree and right child as a sibling in the general tree)
7. Assume nodes in a binary tree are defined in an inner class having the following instance variables.
Comparable info;
BSTNode left;
BSTNode right;
a) Finish the recursive Java function to count the number of nodes in a binary tree. The algorithm works as
follows. If the root (of tree or subtree) is null then return 0; otherwise return the sum of the nodes
on the left and the nodes on the right, plus one for the root.
[7 pts]
public int Counter( _________ curNode)
if(curNode _____________ ) return ____ ;
return Counter ( _________________ )
+ __________ ( _________________ )
+ ____ ;
b) Finish the recursive Java function to return if the item exists in the binary search tree.
[8 pts]
public boolean isThere( BSTNode root, Comparable item)
if (_______ == null) return false;
int comp = item.compareTo( _________ . ___________)
if(comp == 0) return ___________ ;
if(comp < 0) return isThere ( ______ . ______ , item )
return isThere (_______ . _______, item);
CS 240 Computer Science II Exam 3
Page 4
8. Create a binary search tree from the following character data entered into the bst left to right.
[4 pts]
a) List the nodes of your tree above from an inorder traversal.
[3 pts]
b) List the nodes of your tree above from a preorder traversal.
[3 pts]
9. Draw the following infix arithmetic expression as an expression tree. Represent precedence properly.
[4 pts]
a) Show a postorder traversal of your expression tree.
[3 pts]
10. True/False
[6 pts]
______ A doubly linked list permits traversal in both forward and backward directions
______ A doubly linked list doubles the algorithm complexity of the operations over a singly linked list.
______ Most operations on a binary tree depends on the depth of the tree which is logarithmic to its
______ A binary search tree always generates the same inorder traversal regardless of the sequence the
nodes were entered into the tree.
______ A postorder traversal is the same as a reversed preorder travsersal.
______ The maximum number of nodes in a binary tree at level N is 2N