1 / 17

CS 261 – Recitation 9 & 10 Graphs & Final review

Oregon State University School of Electrical Engineering and Computer Science. CS 261 – Recitation 9 & 10 Graphs & Final review. Fall 2013. Graph: Reachability Problem. Given a single starting vertex, produce the set of vertices that can be reached starting from the initial location.

shanta
Télécharger la présentation

CS 261 – Recitation 9 & 10 Graphs & 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. Oregon State University • School of Electrical Engineering and Computer Science CS 261 – Recitation 9 & 10Graphs & Final review Fall 2013

  2. Graph: Reachability Problem • Given a single starting vertex, produce the set of vertices that can be reached starting from the initial location. • A depth-first search follows each path as far (deep) as possible before backtracking. • A breadth-first search looks at all possible paths at the same time. Order in which nodes are reached: (left) DFS; and (right) BFS. Source: Wikipedia

  3. Graph: Reachability Problem findReachable (graph g, vertex start) { create a set of reachable vertices, initially empty. call this r. create a container for vertices known to be reachable. call this c add start vertex to container c while the container c is not empty { remove first entry from the container c, assign to v if v is not already in the set of reachable vertices r { add v to the reachable set r add the neighbors of v to the container c } } return r } DFS: Container is a Stack BFS: Container is a Queue

  4. Exercise • Simulate the DFS and BFS on the following graph starting at node A. • Notes: (1) Nodes must be added to the container (Stack or Queue) in COUNTER-CLOCKWISE order; (2) We do not add neighbors to the container if they have already been visited.

  5. Outline – Final exam review • BST/AVL/Tree sort/Tree traversal/Tree iterator • Heaps/heap sort • Hash tables Materials in these slides were collected from different Internet sources. CS 261 – Data Structures

  6. Question H J D F B K I A C E G CS 261 – Data Structures

  7. Pre, In, Post-order traversal Pre-order: 10 – 5 – 1 – 8 – 7 – 6 – 34 – 56 – 40 - 60 In-order: 1 – 5 – 6 – 7 – 8 – 10 – 34 – 40 – 56 - 60 Post–order: 1 – 6 – 7 – 8 – 5 – 40 – 60 – 56 – 34 – 10 CS 261 – Data Structures

  8. Adding 13??? 13 CS 261 – Data Structures

  9. Removing 10??? CS 261 – Data Structures

  10. TreeSort struct AVLTree* newAVLTree(); void addAVLTree(struct AVLTree *tree, TYPE val); void treeSort (TYPE data[], int n) {…} void _treeSortHelper(AVLNode *cur, TYPE *data, int *count) {…} CS 261 – Data Structures

  11. treeSort void treeSort(TYPE data[], int n){ int i; int count = 0; /* declare an AVL tree */ struct AVLTree *tree = newAVLtree(); assert(data != NULL && n > 0); /* add elements to the tree */ for (i = 0; i < n; i++) addAVLTree(tree, data[i]); /* call the helper function */ _treeSortHelper(tree->root, data, &count); } CS 261 – Data Structures

  12. _treeSortHelper /* *count goes from 0 to n-1 */ void _treeSortHelper(AVLNode *cur, TYPE *data, int *count){ if (cur != NULL) { _treeSortHelper(cur->left, data, count); data[*count] = cur->val; (*count)++; _treeSortHelper(cur->right, data, count); } } CS 261 – Data Structures

  13. True or False CS 261 – Data Structures

  14. Question • Add 12, remove 3, remove 5 CS 261 – Data Structures

  15. When to do a double rotation? • Balance Factor = height(right subtree) - height(left subtree) • At an unbalanced node N, a double rotation is needed when: • N’s BF is positive and N’s right subtree’s BF is negative • N’s BF is negative and N’s left subtree’s BF is positive. CS 261 – Data Structures 15

  16. Heaps and priority queues • How to represent a binary heap? • Using an array (dyArray) • Suppose the root has index 0, what are the indices of the 2 children of a node at index i? • What is the index of the parent of a node at index i? 2 * i + 1, 2 * i + 2 (i-1)/2 2 3 5 9 10 7 8 3 9 5 7 7 14 8 12 9 11 10 16 0 2 1 3 2 5 4 10 6 8 14 12 11 16 CS 261 – Data Structures

  17. Simulate heap sort for the following heap 3 10 9 16 14 12 11 CS 261 – Data Structures

More Related