csce 2100: computing foundations 1 the tree data model
DESCRIPTION
CSCE 2100: Computing Foundations 1 The Tree Data Model. Tamara Schneider Summer 2013. Trees in Computer Science. Data model to represent hierarchical or nested structures family trees charts arithmetic expressions - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/1.jpg)
CSCE 2100: Computing Foundations 1
The Tree Data Model
Tamara SchneiderSummer 2013
![Page 2: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/2.jpg)
2
Trees in Computer Science
– Data model to represent hierarchical or nested structures• family trees• charts• arithmetic expressions
– Certain tree types allow for faster search, insertion and deletion of elements
![Page 3: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/3.jpg)
3
Tree Terminology [1]
n1
n4
n3n2
n6n5
• n1 is called the root node• n2 and n3 are children of n1• n4, n5, n6 are children of n2• n4, n5, and n6 are siblings• n1 is a parent of n2 and n3• n3, n4, n5, and n6 are leaves, since they
do not have any children• All other nodes are interior nodes
![Page 4: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/4.jpg)
4
Tree Terminology [2]
• n2, n3, n4, n5, and n6 are descendants of n1
• n1 and n2 are ancestors of n5
• n2 is the root of a sub-tree T
n1
n4
n3n2
n6n5
T
![Page 5: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/5.jpg)
5
Conditions for a tree
• It has a root.• All nodes have a unique parent.• Following parents from any node in the tree,
we eventually reach the root.
![Page 6: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/6.jpg)
6
Inductive Definition of Trees• Basis: A single node n is a tree. • Induction: For a new node r and existing
trees T1, T2, ... , Tk, designate r as the root node and make all Ti its children.
T1 T3T2 Tk...
rSubtrees are often drawn as triangles. We do not know the size of each of the sub-trees. They can be as small as a single node.
![Page 7: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/7.jpg)
7
n8n7
Height and Depth of a tree
n1
n4
n3n2
n6n5
3
2
1
0
3
The height of the tree is the length of the longest path between any node and the root.
The depth (level) of a node is the length of the path to the root.
The height of the tree is 3.The depth or level of node n5 is 2. The depth of the root node is always 0.
![Page 8: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/8.jpg)
8
Expression Trees• Describe arithmetic expressions• Inductively defined– A tree can be as little as containing a single
operand, e.g. a variable or integer (basis)– Trees can be inductively generated by applying
the unary operator “-” to it or combing two trees via binary operators (+, - , * , / )
![Page 9: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/9.jpg)
9
Expression Trees - Example
![Page 10: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/10.jpg)
10
Tree Data Structures
• In C we can define a structure, similarly to linked lists. – use malloc to allocate memory for each node– nodes “float” in memory and are reached via pointers
• In C++ we can also use classes to represent the individual nodes (and we will for this class)
• Trees can also be represented by arrays of pointers
![Page 11: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/11.jpg)
11
Trees as “Array of Pointers” using Classes
A tree contains the functions that are executed on a tree
It has a pointer to the “access point” of the tree, the root node.
![Page 12: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/12.jpg)
12
Trees as “Array of Pointers” using Classes
Each node contains data
Each node contains an array of pointers to its children
Each child is represented by a the root of a tree (sub-tree)
Since CTree is a friend class, it can access the private data of CNode
![Page 13: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/13.jpg)
13
Constructor of CNode
![Page 14: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/14.jpg)
14
Functions of CTree
• Insert– creates a new node.– navigates through the tree to place the node in the
corresponding spot.• Search
– navigates through the tree to the spot where the search value is suspected.
– returns true is the search was successful, false otherwise.• Remove
– executes a search on the tree.– deletes the element if it exists.
![Page 15: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/15.jpg)
15
Trie (Prefix Tree) - Abstraction
Nodes contain “data” and a flag indicating whether a valid word ends at the node
he, hers, his, she
abstract representation of a trie
![Page 16: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/16.jpg)
16
TrieNode
![Page 17: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/17.jpg)
17
TrieNode Constructor
![Page 18: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/18.jpg)
18
Trie (Prefix Tree) - Data Structure
What value for MAX_CHILDREN do you expect?
Are arrays of pointers a space efficient choice?
![Page 19: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/19.jpg)
19
Leftmost-Child-Right-Sibling Abstraction
• Use a linked list instead of an array. • A parent only points to the first of its children
children of n1
children of n2
child of n4
![Page 20: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/20.jpg)
20
Leftmost-Child-Right-Sibling Data Structure
![Page 21: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/21.jpg)
21
Recursion on TreesRecursion is “natural” on trees, since trees are recursively defined.
![Page 22: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/22.jpg)
22
Order of Recursion
108
1, 13, 15
3
142, 4, 6, 12
7, 9, 115
![Page 23: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/23.jpg)
23
Tree Traversal: Preorder
• List a node the first time it is visited
• n1, n2, n4, n5, n6, n7, n8, n3
• For expression trees: results in prefix ex-pressions, e.g.
(a + b) * c (infix)*+abc (prefix)
n8n7
n1
n4
n3n2
n6n5
![Page 24: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/24.jpg)
24
Tree Traversal: PostorderList a node the last time it is visited.n4, n5, n7, n8, n6, n2, n3, n1
For expression trees: results in prefix expressions, e.g.
(a + b) * c (infix)ab+c* (postfix)
n8n7
n1
n4
n3n2
n6n5
![Page 25: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/25.jpg)
25
Binary Trees
Binary trees can have at most 2 children. Examples:
n2
n1n1
n2
n1
We distinguish between the left and the right child. The distinction between them is important!
n3n2
n1
![Page 26: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/26.jpg)
26
All binary Trees With 3 Nodes
![Page 27: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/27.jpg)
27
Binary Tree Traversal: InorderList a node after its left child has been listed and before its right child has been listedn4, n2, n6, n5, n7, n1, n3
For expression trees: results in infix expressions
n7n6
n1
n4
n3n2
n5
![Page 28: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/28.jpg)
28
Evaluating Expression Trees [1]
• For interior nodes, m_chOperator contains an arithmetic operator (+,-,*,/)
• For leaf nodes, m_chOperator contains the character i for integer, and m_nData contains a value
+
left right
![Page 29: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/29.jpg)
29
Evaluating Expression Trees [2]
![Page 30: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/30.jpg)
30
Structural InductionProve a statement S(T) for a tree T– Basis: Prove the statement for a single node– Induction: Assume the statement is true for
subtrees T1 T2 ... Tk
r
r1
T2 Tk
r2 rk
T1 . . .
![Page 31: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/31.jpg)
31
Structural Induction - Example [1]
S(T): T::eval() returns the value of the arithmetic expression represented by T.
![Page 32: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/32.jpg)
32
Structural Induction - Example [2]
Basis: T consists of a single node. m_chOperator has the value ‘i’ and the value (stored in m_nData) is returned.
![Page 33: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/33.jpg)
33
Structural Induction - Example [3]Induction: If T is not a leaf:• v1 and v2 contain the
values of the left and right subtrees (by inductive hypothesis).
• In the switch statement the corresponding operator is applied → correct value returned. ∎
![Page 34: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/34.jpg)
34
Binary Search Trees
• Suitable for so-called dictionary operations: – insert – delete– search
• Binary Search Tree property: All nodes in left subtree of a node x have labels less than the label of x, and all nodes in the right subtree of x have labels greater than the label of x.
![Page 35: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/35.jpg)
35
Binary Search Tree - Example
Is this a valid binary search tree in lexicographic order?
![Page 36: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/36.jpg)
36
Search
Search for element x– Check root node • If the root is null, return false• If x == root->data, return true• If x > root->data, search in the right subtree (recursively)• If x < root->data, search in the left subtree (recursively)
![Page 37: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/37.jpg)
37
Example: Search for 7
3
72
5
10
9
8
![Page 38: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/38.jpg)
38
Recursive Search Implementation
![Page 39: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/39.jpg)
39
Alternate Search Implementation
![Page 40: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/40.jpg)
40
Insertion
Insert element x– Check root node
• If the root is null, create a new root node• If x == root->data, then do nothing• If x > root->data then insert x into the right subtree
(recursively)• If x < root->data then insert x into the left subtree
(recursively)
![Page 41: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/41.jpg)
41
3
72
5
10
9
Example: Insert 8, 5, 2, 7, 9, 3, 2, 10
8
![Page 42: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/42.jpg)
42
Deletion
Search for element x• If x does not exist, there is nothing to delete• If x is a leaf, simply delete leaf• If x is an interior node
– Replace by largest element of left subtree– OR replace by smallest element of right subtree
What would happen if we replaced node by the smallest element of the left subtree?
Deletion is recursive! The node we use to replace the originally deleted node must be deleted recursively!
![Page 43: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/43.jpg)
43
1 3
Example: Delete 4
62 10
9
8
4
75
![Page 44: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/44.jpg)
44
Priority Queues
• The elements of a priority queue have priorities. If an element with a high priority arrives, it passes all the elements with lower priorities.– e.g. Scheduling algorithms in operating systems
make use of priority queues.• Priority queues are often implemented using
heaps, a type of partially ordered tree (POT).
![Page 45: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/45.jpg)
Heaps
45 2
817
19
17
7 3
710
14
A node must have a greater value than its children.A heap is always complete: all levels except the last level are completely filled.
Heaps are usually implemented via arrays. 45
![Page 46: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/46.jpg)
46
Array Representation of Heaps
45 2
817
19
17
7 3
710
14
A[1]
A[2] A[3]
A[4] A[5] A[6] A[7]
A[8] A[9] A[10] A[11] A[12]
For a node A[i], we find its left child at A[2i] and A[2i+1].Example: Children of the node A[5] are A[2*5] and A[2*5+1].
1 2 3 4 5 6 7 8 9 10 11 12
19 17 14 17 8 10 7 5 2 4 7 3
![Page 47: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/47.jpg)
47
Priority Queue Operations: Insert [1]
45 2
817
19
17
7 3
710
14
15
Insert into the last level using the first available spot. If the last level is full, create a new level.
![Page 48: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/48.jpg)
48
Priority Queue Operations: Insert [2]
45 2
817
19
17
7 3
715
14
10
Bubble Up: Compare with parent and exchange, if the parent is smaller.
![Page 49: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/49.jpg)
49
Priority Queue Operations: Insert [2]
45 2
817
19
17
7 3
714
15
10
Bubble Up: Compare with parent and exchange, if the parent is smaller.
![Page 50: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/50.jpg)
50
Priority Queue Operations: Deletemax [1]
45 2
817
19
17
7 3
710
14
The element with the highest priority will be served first and therefore, will be removed first.
![Page 51: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/51.jpg)
51
Priority Queue Operations: Deletemax [2]
45 2
817
19
17
7 3
710
14
The element with the highest priority will be served first and therefore, will be removed first.
The root node must be replaced. We choose the rightmost node of the last level.
![Page 52: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/52.jpg)
52
Priority Queue Operations: Deletemax [3]
45 2
817
3
17
7
710
14
Bubble Down: Compare with parent and if one or both of the children are larger, then exchange it with the larger one of the children.
![Page 53: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/53.jpg)
53
Priority Queue Operations: Deletemax [4]
45 2
817
17
3
7
710
14
Bubble Down: Compare with parent and if one or both of the children are larger, then exchange it with the larger one of the children.
![Page 54: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/54.jpg)
54
Priority Queue Operations: Deletemax [5]
45 2
83
17
17
7
710
14
Bubble Down: Compare with parent and if one or both of the children are larger, then exchange it with the larger one of the children.
What if we swap it with the smaller one of the children?
![Page 55: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/55.jpg)
55
Priority Queue Operations: Deletemax [6]
43 2
85
17
17
7
710
14
Bubble Down: Compare with parent and if one or both of the children are larger, then exchange it with the larger one of the children.
![Page 56: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/56.jpg)
56
Heap Sort
• Heapify the array:Insert elements one by one into an initially empty MaxHeap.
• Repeatedly call deletemax:We obtain the elements in a sorted order from largest to smallest.
• To obtain elements sorted from smallest to largest, we can use a MinHeap instead and repeatedly call deletemin.
![Page 57: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/57.jpg)
57
HeapSort: Example [1]
• Sort 2, 1, 3, 4– Insert elements into heap (Heapify)
22
1
2
1 3
3
1 2
3
1 2
4
3
4 2
1
4
3 2
1
![Page 58: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/58.jpg)
58
HeapSort: Example [2]
• Sort 2, 1, 3, 4– Deletemax
4
3 2
1
1
3 2
4
3
1 2
2
1
4 3
1
4 3 24 3 2 1
![Page 59: CSCE 2100: Computing Foundations 1 The Tree Data Model](https://reader035.vdocument.in/reader035/viewer/2022062309/56815ac3550346895dc88bda/html5/thumbnails/59.jpg)
59
Summary Heaps
• Highest priority element in the root. Each node’s children are smaller than the node itself.– We have seen “max-heaps”, where the greatest
number is in the root.– Analogously there are “min-heap”, where the
smallest number is in the root.• Insertion: Add to end and “bubble-up”• Deletemax: Remove root element and “bubble-
down”• Heaps can be used for sorting (HeapSort)