1 / 29

Trees 1: Theory, Models, Generic Heap Algorithms, Priority Queues

Trees 1: Theory, Models, Generic Heap Algorithms, Priority Queues. Andy Wang Data Structures, Algorithms, and Generic Programming. Review Question. Given the following information, can I uniquely identify a tree? Nodes listed based on an inorder traversal: D, B, F, E, A, C

jeneva
Download Presentation

Trees 1: Theory, Models, Generic Heap Algorithms, Priority Queues

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. Trees 1: Theory, Models, Generic Heap Algorithms, Priority Queues Andy Wang Data Structures, Algorithms, and Generic Programming

  2. Review Question • Given the following information, can I uniquely identify a tree? • Nodes listed based on an inorder traversal: • D, B, F, E, A, C • Nodes listed based on a preorder traversal: • A, B, D, E, F, C

  3. Review Question D B F E A C A B D E F C

  4. Review Question D B F E A C A x B x D x E x F x C x

  5. Partially Ordered Trees • Definition: A partially ordered tree is a tree T such that: • There is an order relation >= defined for the vertices of T • For any vertex p and any child c of p, p >= c

  6. Partially Ordered Trees • Consequences: • The largest element in a partially ordered tree (POT) is the root • No conclusion can be drawn about the order of children

  7. Heaps • Definition: A heap is a partially ordered complete (almost) binary tree. The tree is completely filled on all levels except possibly the lowest. 4 root 3 2 1 0

  8. Heaps • Consequences: • The largest element in a heap is the root • A heap can be stored using the vector implementation of binary tree • Heap algorithms: • Push Heap • Pop Heap

  9. The Push Heap Algorithm • Add new data at next leaf • Repair upward • Repeat • Locate parent • if POT not satisfied • swap • else • stop • Until POT

  10. The Push Heap Algorithm • Add new data at next leaf

  11. The Push Heap Algorithm • Add new data at next leaf

  12. The Push Heap Algorithm • Repeat • Locate parent of v[k] = v[(k – 1)/2] • if POT not satisfied • swap • else • stop

  13. The Push Heap Algorithm • Repeat • Locate parent of v[k] = v[(k – 1)/2] • if POT not satisfied • swap • else • stop

  14. The Push Heap Algorithm • Repeat • Locate parent of v[k] = v[(k – 1)/2] • if POT not satisfied • swap • else • stop

  15. The Push Heap Algorithm • Repeat • Locate parent of v[k] = v[(k – 1)/2] • if POT not satisfied • swap • else • stop

  16. The Push Heap Algorithm • Repeat • Locate parent of v[k] = v[(k – 1)/2] • if POT not satisfied • swap • else • stop

  17. The Push Heap Algorithm • Repeat • Locate parent of v[k] = v[(k – 1)/2] • if POT not satisfied • swap • else • stop

  18. The Pop Heap Algorithm • Copy last leaf to root • Remove last leaf • Repeat • find the larger child • if POT not satisfied • swap • else • stop • Until POT

  19. The Pop Heap Algorithm • Copy last leaf to root

  20. The Pop Heap Algorithm • Copy last leaf to root

  21. The Pop Heap Algorithm • Remove last leaf

  22. The Pop Heap Algorithm • Repeat • find the larger child • if POT not satisfied • swap • else • stop

  23. The Pop Heap Algorithm • Repeat • find the larger child • if POT not satisfied • swap • else • stop

  24. The Pop Heap Algorithm • Repeat • find the larger child • if POT not satisfied • swap • else • stop

  25. Generic Heap Algorithms • Apply to ranges • Specified by random access iterators • Current support • Arrays • TVector<T> • TDeque<T> • Source code file: gheap.h • Test code file: fgss.cpp

  26. Priority Queues • Element type with priority • typename T t • Predicate class P p • Associative queue operations • void Push(t) • void Pop() • T& Front()

  27. Priority Queues • Associative property • Priority value determined by p • Push(t) inserts t, increases size by 1 • Pop() removes element with highest priority value, decreases size by 1 • Front() returns element with highest priority value, no state change

  28. The Priority Queue Generic Adaptor template <typename T, class C, class P> class CPriorityQueue { C c; P LessThan; public: typedef typename C::value_type value_type; int Empty() const { return c.Empty(); } unsigned int Size() const { return c.Size(); } void Clear() { c.Clear(); } CPriorityQueue& operator=(const CPriorityQueue& q) { if (this != &q) { c = q.c; LessThan = q.LessThan; } return *this; }

  29. The Priority Queue Generic Adaptor void Display(ostream& os, char ofc = ‘\0’) const { c.Display(os, ofc); } void Push(const value_type& t) { c.PushBack(t); g_push_heap(c.Begin(), c.End(), LessThan); } void Pop() { if (Empty()) { cerr << “error” << endl; exit(EXIT_FALIURE); } g_pop_heap(c.Begin(), c.End(), LessThan); c.PopBack(); } };

More Related