1 / 113

CS 61b: Final Review

This review covers important topics for the CS.61b final exam, including inheritance, method calls, asymptotic analysis, data structures (BST, B-Trees, heaps, hash tables, AVL trees, graphs), sorting, skip lists, threading, synchronization, scheduling, minimax, and more.

Download Presentation

CS 61b: Final Review

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS 61b: Final Review Data Structures Amir Kamil and Jack Sampson

  2. DISCLAIMER We have NOTseen the exam. We do NOTknow the format of the exam What we are presenting is what we “think is important” for the exam Final Review

  3. Inheritance, Method Calls Asymptotic Analysis Data Structures Binary Search Trees B-Trees Heaps Hash Tables AVL Trees Graphs DFS, BFS Topological Sort Strongly Connected Components Dijkstra Kruskal Sorting Skip Lists Threading, Synchronization Scheduling Minimax B+ Trees Threaded Trees Review Topics Final Review

  4. Inheritance/Method Calls • Given the class definitions on the next slide, which lines in class foobarbaz are illegal? Final Review

  5. package foo; import bar.bar; public class foobarbaz { static void main(String[] args) { foo f = new foo(); bar r = new bar(); baz z; r.f3(3); f.f2(3); z = (baz) f; f = new baz(); f.f2(3); z = (baz) f; z.f1(); r.f1(); ((foo) r).f1(); } } Inheritance package foo; public class foo { static void f1() {…} protected boolean f2(int x) {…} private String f3(String s) {…} } package foo; public class baz extends foo { private String f3(String s) {…} } package bar; import foo.foo; public class bar extends foo { protected boolean f3(int x) {…} } Final Review

  6. Inheritance/Method Calls • Access table: • Static methods called according to static type • Child type can be assigned to parent variable without a cast, but the reverse requires one, and the dynamic types must match Final Review

  7. package foo; import bar.bar; public class foobarbaz { static void main(String[] args) { foo f = new foo(); bar r = new bar(); baz z; r.f3(3); // ILLEGAL f.f2(3); z = (baz) f; // ILLEGAL f = new baz(); f.f2(3); z = (baz) f; z.f1(); r.f1(); // ILLEGAL ((foo) r).f1(); } } Inheritance package foo; public class foo { static void f1() {…} protected boolean f2(int x) {…} private String f3(String s) {…} } package foo; public class baz extends foo { private String f3(String s) {…} } package bar; import foo.foo; public class bar extends foo { protected boolean f3(int x) {…} } Final Review

  8. Asymptotic Analysis • O – Upper bound/Worst case • Ω – Lower bound • Ө – both • o – strictly Upper bound More detail… Final Review

  9. Asymptotic Analysis T(n) is O( f(n) ) if and only if there exists positive constants C and N such that T(n) <= C f(n) for all n >= N 5 f(n) T(n) = 4n f(n) = n 4n is O( n ) T(n) f(n) n Final Review

  10. Asymptotic Analysis T(n) is O( f(n) ) if and only if there exists positive constants C and N such that T(n) <= C f(n) for all n >= N N C f(n) T(n) n Final Review

  11. Asymptotic Analysis T(n) is O( f(n) ) if and only if there exists positive constants C and N such that T(n) <= C f(n) for all n >= N T(n) is Ω( f(n) ) if and only if there exists positive constants C and N such that T(n) >= C f(n) for all n >= N Final Review

  12. Asymptotic Analysis T(n) is Ө( f(n) ) if and only if • T(n) is O( f(n) ) and • T(n) is Ω( f(n) ) Examples 5n2+1 is Ө(n2) 3n is O(n2), but 3n is NOT Ө(n2)because 3n is not Ω(n2) Final Review

  13. Asymptotic Analysis Problem • Find the running time of the following code: int foo(int x) { int ans = 1; for (int i = 0; i < x; i++) { for (int j = 0; j < i; j++) { ans *= (i + j); } } return ans; } Final Review

  14. Asymptotic Analysis Solution • The nested loops give away the answer: the outer loop executes x times, the inner loop an average of x/2 times, for a running time of O(x2). int foo(int x) { int ans = 1; for (int i = 0; i < x; i++) { for (int j = 0; j < i; j++) { ans *= (i + j); } } return ans; } Final Review

  15. Trees: Binary Tree Tree: Preorder : ABCEGFD Inorder : CEBAGDF Postorder: ECBDFGA A B G C F E D Final Review

  16. Trees: BST Problem • Remove 8 from: 6 8 3 1 5 7 11 9 13 Final Review

  17. Trees: BST Problem • Remove 8 from: 6 8 3 1 5 7 11 9 13 Replace with successor (left-most node in right subtree) Final Review

  18. Trees: BST Solution • Final tree: 6 9 3 1 5 7 11 13 Final Review

  19. Trees: B-Tree of Order 4 / 2-3-4 Tree • Insert 4 and 6 into the following 2-3-4 tree 8, 12 2, 5 9 16 Final Review

  20. Trees: B-Tree of Order 4 / 2-3-4 Tree • Insert 4 8, 12 2, 4, 5 9 16 Final Review

  21. Trees: B-Tree of Order 4 / 2-3-4 Tree • Insert 6 8, 12 2, 4, 5, 6 9 16 Overflow, so split node and promote middle element Final Review

  22. Trees: B-Tree of Order 4 / 2-3-4 Tree • Insert 6 4, 8, 12 2 5, 6 9 16 Overflow, so split node and promote middle element Final Review

  23. Trees: B-Tree of Order 4 / 2-3-4 Tree • Remove 16 from the following 2-3-4 tree 4, 8, 12 2 5, 6 9 16 Final Review

  24. Trees: B-Tree of Order 4 / 2-3-4 Tree • Remove 16 4, 8, 12 2 5, 6 9 Underflow, so merge with sibling and demote parent element Final Review

  25. Trees: B-Tree of Order 4 / 2-3-4 Tree • Remove 16 4, 8 2 5, 6 9, 12 Underflow, so merge with sibling and demote parent element Final Review

  26. Add 9, 76, 54, 3, 33, 21 to a max heap, using only the array based representation Priority Queues – Problem Final Review

  27. Priority Queues – Insertion • Insert at the last position in the heap • Reheapify up: if the element is greater than its parent, swap them and repeat • For an element at position n, its children are at 2n+1 and 2n+2 • For an element at position n, its parent is at floor[(n-1)/2] Final Review

  28. Priority Queues – Solution • Add 9, 76, 54, 3, 33, 21 to a max heap, using only the array based representation Final Review

  29. Add 9, 76, 54, 3, 33, 21 to a max heap, using only the array based representation Priority Queues – Solution Final Review

  30. Add 9, 76, 54, 3, 33, 21 to a max heap, using only the array based representation Priority Queues – Solution Final Review

  31. Add 9, 76, 54, 3, 33, 21 to a max heap, using only the array based representation Priority Queues – Solution Final Review

  32. Add 9, 76, 54, 3, 33, 21 to a max heap, using only the array based representation Priority Queues – Solution Final Review

  33. Add 9, 76, 54, 3, 33, 21 to a max heap, using only the array based representation Priority Queues – Solution 76 Tree Representation 54 33 3 9 21 Final Review

  34. Remove the max from the heap Priority Queues – Problem Final Review

  35. Priority Queues – Removal • Replace the max element with the last element in the heap • Reheapify down: if one or both of its children is larger than it, swap with the larger of the children and repeat • For an element at position n, its children are at 2n+1 and 2n+2 • For an element at position n, its parent is at floor[(n-1)/2] Final Review

  36. Remove the max from the heap Priority Queues – Solution Final Review

  37. Remove the max from the heap Priority Queues – Solution Final Review

  38. Remove the max from the heap Priority Queues – Solution 54 Tree Representation 21 33 3 9 Final Review

  39. Hash Table Problem • Draw the structure of a size 7 hash table after insertion of keys with the following hash codes: 0, 95, 21, 6, 64, 74, 3, 54, 34, 75, 10. Final Review

  40. Hash Tables • High-level idea – 2 components • Big array called hash table of size M • Function h which maps keys to integer values • For (key, item), use h(key) % M to find location of item in table • Linked list in each entry that stores all items that map to that location (chaining) Final Review

  41. Hash Table Solution • Draw the structure of a size 7 hash table after insertion of keys with the following hash codes: 0, 95, 21, 6, 64, 74, 3, 54, 34, 75, 10. Final Review

  42. AVL Tree Problem • Given the following AVL Tree, performs these consecutive operations and draw out the tree in each step: • Remove(7) • Insert (11) • Insert(12) 6 9 3 1 5 7 10 13 Final Review

  43. AVL Trees • AVL Trees are just Binary Search Trees that can rotate their nodes to try to maintain balance. • Two kinds of rotations – single and double • Can decide which to do based on structure of tree Final Review

  44. Insertions/Removals • You have 3 nodes of importance, which we will call x, y, and z (z is the parent of y which is the parent of x) • If x is the right child of y, and y is the right child of z, you do a single rotation (same goes for left child of left child) • If x is the right child of y, and y is the left child of z, you do a double rotation (same goes for left child of right child) Final Review

  45. Remove(7) 6 9 3 X 1 5 7 10 13 Remove 7 as in BST Final Review

  46. Remove(7) 6 z 9 3 y 1 5 10 x 13 Single rotate Final Review

  47. Remove(7) 6 10 3 1 5 9 13 Final tree Final Review

  48. Insert(11) 6 10 3 1 5 9 13 11 Insert as in BST Final Review

  49. Insert(12) 6 10 3 1 5 9 13 11 Insert as in BST 12 Final Review

  50. Insert(12) 6 10 3 1 5 9 13 z 11 y Double rotate 12 x Final Review

More Related