Download presentation
Presentation is loading. Please wait.
1
EE 2204 - Data Structures and Algorithms
N Radhakrishnan Assistant Professor Anna University, Chennai
2
Anna University, Chennai - 600 025
Topics Types of Data Structures Examples for each type Tree Data Structure Basic Terminology Tree ADT Traversal Algorithms Binary Trees Binary Tree Representations Binary Tree ADT Binary Tree Traversals 29 April 2019 Anna University, Chennai
3
Types of Data Structure
29 April 2019 Anna University, Chennai
4
Linear Data Structures
In linear data structure, member elements form a sequence. Such linear structures can be represented in memory by using one of the two basic strategies By having the linear relationship between the elements represented by means of sequential memory locations. These linear structures are called arrays. By having relationship between the elements represented by pointers. These structures are called linked lists. 29 April 2019 Anna University, Chennai
5
Anna University, Chennai - 600 025
When to use them Arrays are useful when number of elements to be stored is fixed. Operations like traversal searching and sorting can easily be performed on arrays. On the other hand, linked lists are useful when the number of data items in the collection are likely to change. 29 April 2019 Anna University, Chennai
6
Nonlinear Data Structures
In nonlinear data structures, data elements are not organized in a sequential fashion. A data item in a nonlinear data structure could be attached to several other data elements to reflect a special relationship among them and all the data items cannot be traversed in a single run. Data structures like multidimensional arrays, trees and graphs are some examples of widely used nonlinear data structures. 29 April 2019 Anna University, Chennai
7
Anna University, Chennai - 600 025
Examples A Multidimensional Array is simply a collection of one-dimensional arrays. A Tree is a data structure that is made up of a set of linked nodes, which can be used to represent a hierarchical relationship among data elements. A Graph is a data structure that is made up of a finite set of edges and vertices. Edges represent connections or relationships among vertices that stores data elements. 29 April 2019 Anna University, Chennai
8
Anna University, Chennai - 600 025
Difference Main difference between linear and nonlinear data structures lie in the way they organize data elements. In linear data structures, data elements are organized sequentially and therefore they are easy to implement in the computer’s memory. In nonlinear data structures, a data element can be attached to several other data elements to represent specific relationships that exist among them. 29 April 2019 Anna University, Chennai
9
Difficult to Implement
Due to this nonlinear structure, they might be difficult to implement in computer’s linear memory compared to implementing linear data structures. Selecting one data structure type over the other should be done carefully by considering the relationship among the data elements that needs to be stored. 29 April 2019 Anna University, Chennai
10
Anna University, Chennai - 600 025
A Specific Example Imagine that you are hired by company XYZ to organize all of their records into a computer database. The first thing you are asked to do is create a database of names with all the company's management and employees. To start your work, you make a list of everyone in the company along with their position and other details. 29 April 2019 Anna University, Chennai
11
Anna University, Chennai - 600 025
Employees Table 29 April 2019 Anna University, Chennai
12
Disadvantages of Tables
But this list only shows one view of the company. You also want your database to represent the relationships between management and employees at XYZ. Although your list contains both name and position, it does not tell you which managers are responsible for which workers and so on. After thinking about the problem for a while, you decide that a tree diagram is a much better structure for showing the work relationships at XYZ. 29 April 2019 Anna University, Chennai
13
Better Representation
29 April 2019 Anna University, Chennai
14
Anna University, Chennai - 600 025
Comparison These two diagrams are examples of different data structures. In one of the data structures, your data is organized into a list. This is very useful for keeping the names of the employees in alphabetical order so that we can locate the employee's record very quickly. However, this structure is not very useful for showing the relationships between employees. A tree structure is much better suited for this purpose. 29 April 2019 Anna University, Chennai
15
Anna University, Chennai - 600 025
Tree Data Structure A Tree is a nonlinear data structure that models a hierarchical organization. The characteristic features are that each element may have several successors (called its “children”) and every element except one (called the “root”) has a unique predecessor (called its “parent”). Trees are common in computer science: Computer file systems are trees, the inheritance structure for C++/Java classes is a tree. 29 April 2019 Anna University, Chennai
16
Anna University, Chennai - 600 025
What is a Tree ? In Computer Science, a tree is an abstract model of a hierarchical structure A tree consists of nodes with a parent-child relation Applications: Organization Charts File Systems Programming Environment 29 April 2019 Anna University, Chennai
17
Anna University, Chennai - 600 025
Tree Definition Here is the recursive definition of an (unordered) tree: A tree is a pair (r, S), where r is a node and S is a set of disjoint trees, none of which contains r. The node r is called the root of the tree T, and the elements of the set S are called its subtrees. The set S, of course, may be empty. The elements of a tree are called its nodes. 29 April 2019 Anna University, Chennai
18
Root, Parent and Children
If T = (x, S) is a tree, then x is the root of T and S is its set of subtrees S = {T1, T2, T3, , Tn}. Each subtree Tj is itself a tree with its own root rj . In this case, we call the node r the parent of each node rj, and we call the rj the children of r. In general. 29 April 2019 Anna University, Chennai
19
Anna University, Chennai - 600 025
Basic Terminology A node with no children is called a leaf. A node with at least one child is called an internal node. The Node having further sub-branches is called parent node. Every node c other than the root is connected by an edge to some one other node p called the parent of c. We also call c a child of p. 29 April 2019 Anna University, Chennai
20
Anna University, Chennai - 600 025
An Example n1 is the parent of n2 ,n3 and n4, while n2 is the parent of n5 and n6. Said another way, n2, n3, and n4 are children of n1, while n5 and n6 are children of n2. 29 April 2019 Anna University, Chennai
21
Anna University, Chennai - 600 025
Connected Tree A tree is connected in the sense that if we start at any node n other than the root, move to the parent of n, to the parent of the parent of n, and so on, we eventually reach the root of the tree. For instance, starting at n7, we move to its parent, n4, and from there to n4’s parent, which is the root, n1. 29 April 2019 Anna University, Chennai
22
Ancestors and Descendants
The parent-child relationship can be extended naturally to ancestors and descendants. Informally, the ancestors of a node are found by following the unique path from the node to its parent, to its parent’s parent, and so on. The descendant relationship is the inverse of the ancestor relationship, just as the parent and child relationships are inverses of each other. 29 April 2019 Anna University, Chennai
23
Anna University, Chennai - 600 025
Path and Path Length More formally, suppose m1,m2, ,mk is a sequence of nodes in a tree such that m1 is the parent of m2, which is the parent of m3, and so on, down to mk−1, which is the parent of mk. Then m1,m2, ,mk is called a path from m1 to mk in the tree. The path length or length of the path is k −1, one less than the number of nodes on the path. 29 April 2019 Anna University, Chennai
24
Anna University, Chennai - 600 025
In our Example n1, n2, n6 is a path of length 2 from the root n1 to the node n6. 29 April 2019 Anna University, Chennai
25
Anna University, Chennai - 600 025
Height and Depth In a tree, the height of a node n is the length of a longest path from n to a leaf. The height of the tree is the height of the root. The depth, or level, of a node n is the length of the path from the root to n. 29 April 2019 Anna University, Chennai
26
Anna University, Chennai - 600 025
In our Example node n1 has height 2, n2 has height 1, and leaf n3 has height 0. In fact, any leaf has height 0. The height of the tree is 2. The depth of n1 is 0, the depth of n2 is 1, and the depth of n5 is 2. 29 April 2019 Anna University, Chennai
27
Anna University, Chennai - 600 025
Other Terms The size of a tree is the number of nodes it contains. The total number of subtrees attached to that node is called the degree of the node. Degree of the Tree is nothing but the maximum degree in the tree. The nodes with common parent are called siblings or brothers. 29 April 2019 Anna University, Chennai
28
Anna University, Chennai - 600 025
Degree 29 April 2019 Anna University, Chennai
29
Anna University, Chennai - 600 025
Degree of the Tree 29 April 2019 Anna University, Chennai
30
Anna University, Chennai - 600 025
Siblings 29 April 2019 Anna University, Chennai
31
Terminology Explained
29 April 2019 Anna University, Chennai
32
Anna University, Chennai - 600 025
Another Example 29 April 2019 Anna University, Chennai
33
Anna University, Chennai - 600 025
Subtrees 29 April 2019 Anna University, Chennai
34
Anna University, Chennai - 600 025
Binary Tree A binary tree is a tree in which no node can have more than two subtrees. In other words, a node can have zero, one or two subtrees. 29 April 2019 Anna University, Chennai
35
Anna University, Chennai - 600 025
Tree ADT The tree ADT stores elements at positions, which are defined relative to neighboring positions. Positions in a tree are its nodes, and the neighboring positions satisfy the parent-child relationships that define a valid tree. Tree nodes may store arbitrary objects. 29 April 2019 Anna University, Chennai
36
Anna University, Chennai - 600 025
Methods of a Tree ADT As with a list position, a position object for a tree supports the method: element() : that returns the object stored at this position (or node). The tree ADT supports four types of methods: Accessor Methods Generic Methods Query Methods Update Methods 29 April 2019 Anna University, Chennai
37
Anna University, Chennai - 600 025
Accessor Methods We use positions to abstract nodes. The real power of node positions in a tree comes from the accessor methods of the tree ADT that return and accept positions, such as the following: root(): Return the position of the tree’s root; an error occurs if the tree is empty. parent(p): Return the position of the parent of p; an error occurs if p is the root. children(p): Return an iterable collection containing the children of node p. Iterable - you can step through (i.e. iterate) the object as a collection 29 April 2019 Anna University, Chennai
38
Anna University, Chennai - 600 025
Make a note of it If a tree T is ordered, then the iterable collection, children(p), stores the children of p in their linear order. If p is an external node, then children(p) is empty. Any method that takes a position as argument should generate an error condition if that position is invalid. 29 April 2019 Anna University, Chennai
39
Anna University, Chennai - 600 025
Generic Methods Tree ADT also supports the following Generic Methods: size(): Return the number of nodes in the tree. isEmpty(): Test whether the tree has any nodes or not. Iterator(): Return an iterator of all the elements stored at nodes of the tree. positions(): Return an iterable collection of all the nodes of the tree. 29 April 2019 Anna University, Chennai
40
Anna University, Chennai - 600 025
Query Methods In addition to the above fundamental accessor methods, the tree ADT also supports the following Boolean query methods: isInternal(p): Test whether node p is an internal node isExternal(p): Test whether node p is an external node isRoot(p): Test whether node p is the root node (These methods make programming with tree easier and more readable, since we can use them in the conditionals of if -statements and while -loops, rather than using a non-intuitive conditional). 29 April 2019 Anna University, Chennai
41
Anna University, Chennai - 600 025
Update Methods The tree ADT also supports the following update method: replace(p, e): Replace with e and return the element stored at node p. (Additional update methods may be defined by data structures implementing the tree ADT) 29 April 2019 Anna University, Chennai
42
Anna University, Chennai - 600 025
Tree ADT Exceptions An interface for the tree ADT uses the following exceptions to indicate error conditions: InvalidPositionException: This error condition may be thrown by any method taking a position as an argument to indicate that the position is invalid. BoundaryViolationException: This error condition may be thrown by method parent() if it’s called on the root. EmptyTreeException: This error condition may be thrown by method root() if it’s called on an empty tree. 29 April 2019 Anna University, Chennai
43
Anna University, Chennai - 600 025
Traversal Algorithms A traversal (circumnavigation) algorithm is a method for processing a data structure that applies a given operation to each element of the structure. For example, if the operation is to print the contents of the element, then the traversal would print every element in the structure. The process of applying the operation to an element is called visiting the element. So executing the traversal algorithm causes each element in the structure to be visited. 29 April 2019 Anna University, Chennai
44
Anna University, Chennai - 600 025
Level Order Traversal The level order traversal algorithm visits the root, then visits each element on the first level, then visits each element on the second level, and so forth, each time visiting all the elements on one level before going down to the next level. If the tree is drawn in the usual manner with its root at the top and leaves near the bottom, then the level order pattern is the same left-to-right top-to-bottom pattern that you follow to read English text. 29 April 2019 Anna University, Chennai
45
Anna University, Chennai - 600 025
Level Order Example 29 April 2019 Anna University, Chennai
46
Level order Traversal - Algorithm
To traverse a nonempty ordered tree: 1. Initialize a queue. 2. Enqueue the root. 3. Repeat steps 4–6 until the queue is empty. 4. Dequeue node x from the queue. 5. Visit x. 6. Enqueue all the children of x in order. 29 April 2019 Anna University, Chennai
47
Anna University, Chennai - 600 025
Preorder Traversal The preorder traversal of the tree shown above would visit the nodes in this order: a, b, e, h, i, f, c, d, g, j, k, l, m. Note that the preorder traversal of a tree can be obtained by circumnavigating the tree, beginning at the root and visiting each node the first time it is encountered on the left. 29 April 2019 Anna University, Chennai
48
Preorder Traversal - Algorithm
To traverse a nonempty ordered tree: 1. Visit the root. 2. Do a recursive preorder traversal of each subtree in order. The postorder traversal algorithm does a postorder traversal recursively to each subtree before visiting the root. 29 April 2019 Anna University, Chennai
49
Anna University, Chennai - 600 025
Binary Trees A binary tree is either the empty set or a triple T = (x, L, R), where x is a node and L and R are disjoint binary trees, neither of which contains x. The node x is called the root of the tree T, and the subtrees L and R are called the left subtree and the right subtree of T rooted at x. 29 April 2019 Anna University, Chennai
50
Anna University, Chennai - 600 025
Binary Tree 29 April 2019 Anna University, Chennai
51
Anna University, Chennai - 600 025
Terminologies The definitions of the terms size, path, length of a path, depth of a node, level, height, interior node, ancestor, descendant, and subtree are the same for binary trees as for general trees. 29 April 2019 Anna University, Chennai
52
Trees and Binary Trees - Difference
It is important to understand that while binary trees require us to distinguish whether a child is either a left child or a right child, ordinary trees require no such distinction. There is another technical difference. While trees are defined to have at least one node, it is convenient to include the empty tree, the tree Empty tree with no nodes, among the binary trees. 29 April 2019 Anna University, Chennai
53
Anna University, Chennai - 600 025
Difference Continued That is, binary trees are not just trees all of whose nodes have two or fewer children. Not only are the two trees in the above Figure are different from each other, but they have no relation to the ordinary tree consisting of a root and a single child of the root: 29 April 2019 Anna University, Chennai
54
Five binary trees with three nodes
29 April 2019 Anna University, Chennai
55
Full and Complete Binary Trees
A binary tree is said to be full if all its leaves are at the same level and every interior node has two children. A complete binary tree is either a full binary tree or one that is full except for a segment of missing leaves on the right side of the bottom level. 29 April 2019 Anna University, Chennai
56
Full and Complete Binary Trees
29 April 2019 Anna University, Chennai
57
Anna University, Chennai - 600 025
Full Binary Tree 29 April 2019 Anna University, Chennai
58
Anna University, Chennai - 600 025
Complete Binary Tree 29 April 2019 Anna University, Chennai
59
Anna University, Chennai - 600 025
Full Binary Trees The full binary tree of height h has l = 2h leaves and m = 2h – 1 internal nodes. The full binary tree of height h has a total of n = 2h+1 – 1 nodes. The full binary tree with n nodes has height h = lg(n+1) – 1. 29 April 2019 Anna University, Chennai
60
Anna University, Chennai - 600 025
Complete Binary Tree In a complete binary tree of height h, h + 1 ≤ n ≤ 2h+1 – 1 and h = └ lg n ┘ 29 April 2019 Anna University, Chennai
61
Anna University, Chennai - 600 025
Make a Note Complete binary trees are important because they have a simple and natural implementation using ordinary arrays. The natural mapping is actually defined for any binary tree: Assign the number 1 to the root; for any node, if i is its number, then assign 2i to its left child and 2i+1 to its right child (if they exist). This assigns a unique positive integer to each node. Then simply store the element at node i in a[i], where a[] is an array. 29 April 2019 Anna University, Chennai
62
Binary Tree Representations
If a complete binary tree with n nodes (depth = log n + 1) is represented sequentially, then for any node with index i, 1 ≤ i ≤ n, we have: parent(i) is at i/2 if i!=1. If i=1, i is at the root and has no parent. leftChild(i) is at 2i if 2i ≤ n. If 2i > n, then i has noleft child. rightChild(i) is at 2i+1 if 2i +1 ≤ n. If 2i +1 >n, then i has no right child. 29 April 2019 Anna University, Chennai
63
Anna University, Chennai - 600 025
Array Implementation 29 April 2019 Anna University, Chennai
64
Anna University, Chennai - 600 025
The Disadvantage Figure above shows the incomplete binary tree and the natural mapping of its nodes into an array which leaves some gaps. 29 April 2019 Anna University, Chennai
65
Linked List Implementation
typedef struct tnode *ptnode; typedef struct tnode { int data; ptnode left, right; }; 29 April 2019 Anna University, Chennai
66
Linked List Implementation
29 April 2019 Anna University, Chennai
67
Include One more Pointer
A natural way to implement a tree T is to use a linked structure, where we represent each node p of T by a position object with the following fields: A link to the parent of p, A link to the LeftChild named Left, a link to the RightChild named Right and the Data. Parent Data Left Right 29 April 2019 Anna University, Chennai
68
Anna University, Chennai - 600 025
Array Implementation Advantages Direct Access Finding the Parent / Children is fast Disadvantages Wastage of memory Insertion and Deletion will be costlier Array size and depth 29 April 2019 Anna University, Chennai
69
Linked List Implementation
Advantages No wastage of memory Insertion and Deletion will be easy Disadvantages Does not provide direct access Additional space in each node. 29 April 2019 Anna University, Chennai
70
Anna University, Chennai - 600 025
Binary Tree ADT The Binary Tree ADT extends the Tree ADT, i.e., it inherits all the methods of the Tree ADT, in addition to that it supports the following additional accessor methods: position left(p): return the left child of p, an error condition occurs if p has no left child. position right(p): return the right child of p, an error condition occurs if p has no right child. boolean hasLeft(p): test whether p has a left child boolean hasRight(p): test whether p has a right child 29 April 2019 Anna University, Chennai
71
Anna University, Chennai - 600 025
Binary Tree ADT (Cont.) Update methods may be defined by data structures implementing the Binary Tree ADT. Since Binary trees are ordered trees, the iterable collection returned by method chilrden(p) (inherited from the Tree ADT), stores the left child of p before the right child of p. 29 April 2019 Anna University, Chennai
72
Binary Tree Traversals
The three traversal algorithms that are used for general trees (see Chapter 10) apply to binary trees as well: the preorder traversal, the postorder traversal, and the level order traversal. In addition, binary trees support a fourth traversal algorithm: the inorder traversal. These four traversal algorithms are given next. 29 April 2019 Anna University, Chennai
73
Anna University, Chennai - 600 025
Level Order Traversal To traverse a nonempty binary tree: 1. Initialize a queue. 2. Enqueue the root. 3. Repeat steps 4–7 until the queue is empty. 4. Dequeue a node x from the queue. 5. Visit x. 6. Enqueue the left child of x if it exists. 7. Enqueue the right child of x if it exists. 29 April 2019 Anna University, Chennai
74
Anna University, Chennai - 600 025
Level Order 29 April 2019 Anna University, Chennai
75
Anna University, Chennai - 600 025
Preorder Traversal To traverse a nonempty binary tree: 1. Visit the root. 2. If the left subtree is nonempty, do a preorder traversal on it. 3. If the right subtree is nonempty, do a preorder traversal on it. 29 April 2019 Anna University, Chennai
76
Anna University, Chennai - 600 025
Preorder 29 April 2019 Anna University, Chennai
77
Anna University, Chennai - 600 025
Postorder Traversal To traverse a nonempty binary tree: 1. If the left subtree is nonempty, do a postorder traversal on it. 2. If the right subtree is nonempty, do a postorder traversal on it. 3. Visit the root. 29 April 2019 Anna University, Chennai
78
Anna University, Chennai - 600 025
Postorder 29 April 2019 Anna University, Chennai
79
Anna University, Chennai - 600 025
Inorder Traversal To traverse a nonempty binary tree: 1. If the left subtree is nonempty, do a preorder traversal on it. 2. Visit the root. 3. If the right subtree is nonempty, do a preorder traversal on it. 29 April 2019 Anna University, Chennai
80
Anna University, Chennai - 600 025
Inorder 29 April 2019 Anna University, Chennai
81
Anna University, Chennai - 600 025
Traversal Using Flag The order in which the nodes are visited during a tree traversal can be easily determined by imagining there is a “flag” attached to each node, as follows: To traverse the tree, collect the flags: 29 April 2019 Anna University, Chennai
82
Anna University, Chennai - 600 025
Inorder and Postorder 29 April 2019 Anna University, Chennai
83
Anna University, Chennai - 600 025
Interaction 29 April 2019 Anna University, Chennai
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.