ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

Slides:



Advertisements
Similar presentations
0 - 0.
Advertisements

§4.1 The von Neumann Architecture Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
MTE 241 Introduction to Computer Structures and Real-time Systems
§4.4 Input and Output Devices
Chained hash tables.
§12.4 Static Paging Algorithms
Interesting Functions in Matlab Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
Definitions and Bottom-Up Insertion
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
K-dTrees.
110/6/2014CSE Suprakash Datta datta[at]cse.yorku.ca CSE 3101: Introduction to the Design and Analysis of Algorithms.
Solving Absolute Value Equations Solving Absolute Value Equations
Huffman Coding An implementation using C++ STL (part of the material is due to the work of Mark Nelson, Dr. Dobb’s Journal, January 1996)
Prof. Amr Goneid, AUC1 Analysis & Design of Algorithms (CSCE 321) Prof. Amr Goneid Department of Computer Science, AUC Part R4. Disjoint Sets.
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
AVL Trees COL 106 Amit Kumar Shweta Agrawal Slide Courtesy : Douglas Wilhelm Harder, MMath, UWaterloo
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
1 A full binary tree A full binary tree is a binary tree in which all the leaves are on the same level and every non leaf node has two children. SHAPE.
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
Chapter 12 Trees. Copyright © 2005 Pearson Addison-Wesley. All rights reserved Chapter Objectives Define trees as data structures Define the terms.
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
More Trees COL 106 Amit Kumar and Shweta Agrawal Most slides courtesy : Douglas Wilhelm Harder, MMath, UWaterloo
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
Algorithm design techniques
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
Comp 245 Data Structures Linked Lists. An Array Based List Usually is statically allocated; may not use memory efficiently Direct access to data; faster.
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
C++ Tutorial Hany Samuel and Douglas Wilhelm Harder Department of Electrical and Computer Engineering University of Waterloo Copyright © 2006 by Douglas.
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
Decimal Numbers Douglas Wilhelm Harder Department of Electrical and Computer Engineering University of Waterloo Copyright © 2007 by Douglas Wilhelm Harder.
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
AVL Trees 1. 2 Outline Background Define balance Maintaining balance within a tree –AVL trees –Difference of heights –Rotations to maintain balance.
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo, Ontario, Canada ece.uwaterloo.ca.
Lecture 15 Jianjun Hu Department of Computer Science and Engineering University of South Carolina CSCE350 Algorithms and Data Structure.
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
Prof. Amr Goneid, AUC1 Analysis & Design of Algorithms (CSCE 321) Prof. Amr Goneid Department of Computer Science, AUC Part R3. Priority Queues.
FALL 2005CENG 213 Data Structures1 Priority Queues (Heaps) Reference: Chapter 7.
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
1 N -ary trees This topic quickly looks at a generalization of a binary tree, where each node has up to N children –Definition –Perfect N -ary trees –Complete.
1 Binary trees Outline In this talk, we will look at the binary tree data structure: –Definition –Properties –A few applications Ropes (strings) Expression.
1 Complete binary trees Outline Introducing complete binary trees –Background –Definitions –Examples –Logarithmic height –Array storage.
1 Priority Queues (Heaps). 2 Priority Queues Many applications require that we process records with keys in order, but not necessarily in full sorted.
Outline In this topic we will look at:
Multiway Search Trees.
Priority Queues (Heaps)
Presentation transcript:

ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo, Ontario, Canada ece.uwaterloo.ca © by Douglas Wilhelm Harder. Some rights reserved. Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo, Ontario, Canada ece.uwaterloo.ca © by Douglas Wilhelm Harder. Some rights reserved. N -ary Trees

2 N -ary trees This topic quickly looks at a generalization of a binary tree, where each node has up to N children –Definition –Perfect N -ary trees –Complete N -ary trees –Implementation using templates Outline

3 N -ary trees N -ary Trees One generalization of binary trees are a class of trees termed N -ary trees: –A tree where each node had N sub-trees, any of which may be may be empty trees 5.4.1

4 N -ary trees Ternary Trees Examples of a ternary ( 3 -ary) trees –We don’t usually indicate empty sub-trees 5.4.1

5 N -ary trees Quaternary Trees Example of a perfect quaternary ( 4 -ary) tree Under certain conditions, the number of operations required may be slightly fewer with quaternary trees (e.g., with heaps) –The asymptotic behaviour is similar 5.4.1

6 N -ary trees Perfect N -ary Trees Each node can have N children The number of nodes in a perfect N -ary tree of height h is 1 + N + N 2 + N 3 ⋅⋅⋅ + N h This is a geometric sum, and therefore, the number of nodes is

7 N -ary trees Perfect N -ary Trees Solving this equation for h, a perfect N -ary tree with n nodes has a height given by

8 N -ary trees Perfect N -ary Trees We note, however, that log N (nN) – 1 = log N (n), hence, we may postulate that log N (n) should be an equally good approximation

9 N -ary trees N -ary Trees Recall that the height for perfect binary tree is approximately lg(n) Therefore, if the height of an N -ary tree is log N (n), the ratio of the heights is:

10 N -ary trees N -ary Trees Therefore: –The height of a perfect quaternary tree is approximately ½ the height of a perfect binary tree with approximately the same number of nodes –The height of a perfect 16-ary tree is approximately ¼ the height of a perfect binary tree with the same number of nodes

11 N -ary trees Complete N -ary Trees A complete N -ary tree has height Like complete binary trees, complete N -ary trees can also be stored efficiently using an array: –Assume the root is at index 0 –The parent of a node with index k is at location –The children of a node with index k are at locations kN + j for j = 1, …, N

12 N -ary trees Implementation of N -ary Trees The “obvious” implementation of N -ary trees may be something like: # include template class Nary_tree { private: Type element; int N; Nary_tree **children; public: Nary_tree( Type const &, int = 2 ); //... }; template Nary_tree ::Nary_tree( Type const &e, int n ): element( e ), N( std::max( 2, n ) ), children( new *Nary_tree[N] ) { for ( int i = 0; i < N; ++i ) { children[i] = nullptr; }

13 N -ary trees Implementation of N -ary Trees Problems with this implementation: –Requires dynamic memory allocation –A destructor is required to delete the memory –No optimizations possible –Dynamic memory allocation may not always be available (embedded systems) Solution? –Specify N at compile time

14 N -ary trees N -ary Trees with Template Parameters #include template class Nary_tree { private: Type element; Nary_tree *children[std::max(N, 2)]; // an array of N children public: Nary_tree( Type const & = Type() ) //... }; template Nary_tree ::Nary_tree( Type const &e ):element( e ) { for ( int i = 0; i < N; ++i ) { children[i] = nullptr; } 5.4.3

15 N -ary trees N -ary Trees with Template Parameters Sample code using this class: Nary_tree i4tree( 1975 ); // create a 4-way tree std::cout << i4tree.retrieve() << std::endl; 5.4.3

16 N -ary trees N -ary Trees Because the size of the array (the 2 nd template parameter) is specified at compile time: –The compiler can make certain optimizations –All memory is allocated at once Possibly even on the stack at compile time –No destructor required 5.4.3

17 N -ary trees Applications One application of an 26 -ary trees is a trie where the root represents the start of each valid word, and the different sub-trees represent next letters in valid words –Consider the words in the phrase “The fable then faded from my thoughts and memory.” –All 26 sub-trees are only shown for the root node, but all nodes have 26 sub-trees –Some nodes are marked as terminal indicating the end of a valid word –These terminal points could be used to store a list of all places in a document where the word occurs Consider the ultimate index to a book 5.4.4

18 N -ary trees Summary An N -ary tree is similar to a binary tree, however, each node can have up to N children A binary tree has a height approximately log 2 (N) times the height of an N -ary tree containing the same number of nodes

19 N -ary trees [1]Cormen, Leiserson, and Rivest, Introduction to Algorithms, McGraw Hill, 1990, §5.5.3, p Reference

20 N -ary trees Usage Notes These slides are made publicly available on the web for anyone to use If you choose to use them, or a part thereof, for a course at another institution, I ask only three things: –that you inform me that you are using the slides, –that you acknowledge my work, and –that you alert me of any mistakes which I made or changes which you make, and allow me the option of incorporating such changes (with an acknowledgment) in my set of slides Sincerely, Douglas Wilhelm Harder, MMath