Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS Data Structures Chapter 15 Trees Mehmet H Gunes

Similar presentations


Presentation on theme: "CS Data Structures Chapter 15 Trees Mehmet H Gunes"— Presentation transcript:

1 CS 302 - Data Structures Chapter 15 Trees Mehmet H Gunes
Modified from authors’ slides

2 Content Terminology The ADT Binary Tree The ADT Binary Search Tree
Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

3 Terminology Use trees to represent relationships
Trees are hierarchical in nature “Parent-child” relationship exists between nodes in tree. Generalized to ancestor and descendant Lines between the nodes are called edges A subtree in a tree is any node in the tree together with all of its descendants Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

4 Jake’s Pizza Shop Owner Jake Manager Chef Brad Carol
Waitress Waiter Cook Helper Joyce Chris Max Len

5 A Tree Has a Root Node Owner Jake ROOT NODE Manager Chef Brad Carol
Waitress Waiter Cook Helper Joyce Chris Max Len

6 Leaf Nodes have No Children
Owner Jake Manager Chef Brad Carol Waitress Waiter Cook Helper Joyce Chris Max Len

7 A Tree Has Levels Owner LEVEL 0 Jake Manager Chef Brad Carol
Waitress Waiter Cook Helper Joyce Chris Max Len LEVEL 0

8 Level One Owner Jake Manager Chef Brad Carol LEVEL 1
Waitress Waiter Cook Helper Joyce Chris Max Len

9 Level Two Owner Jake Manager Chef Brad Carol LEVEL 2
Waitress Waiter Cook Helper Joyce Chris Max Len LEVEL 2

10 A Subtree Owner Jake Manager Chef Brad Carol LEFT SUBTREE OF ROOT NODE
Waitress Waiter Cook Helper Joyce Chris Max Len LEFT SUBTREE OF ROOT NODE

11 Another Subtree Owner Jake Manager Chef Brad Carol RIGHT SUBTREE
Waitress Waiter Cook Helper Joyce Chris Max Len RIGHT SUBTREE OF ROOT NODE

12 Terminology (a) A tree; (b) a subtree of the tree in part a
Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

13 Terminology (a) An organization chart; (b) a family tree
Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

14 Kinds of Trees General Tree
Set T of one or more nodes such that T is partitioned into disjoint subsets A single node r , the root Sets that are general trees, called subtrees of r Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

15 Kinds of Trees n -ary tree
set T of nodes that is either empty or partitioned into disjoint subsets: A single node r , the root n possibly empty sets that are n -ary subtrees of r Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

16 Kinds of Trees Binary tree
Set T of nodes that is either empty or partitioned into disjoint subsets Single node r , the root Two possibly empty sets that are binary trees, called left and right subtrees of r Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

17 A Binary Tree V Q L E T A K S

18 How many leaf nodes? V Q L T E A K S

19 How many descendants of Q?
V Q L T E A K S

20 How many ancestors of K? Q V T K S A E L

21 Implementing a Binary Tree with Pointers and Dynamic Data
V Q L T E A K S

22 Node Terminology for a Tree Node

23 Example: Algebraic Expressions.
Binary trees that represent algebraic expressions Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

24 Binary Search Tree For each node n, a binary search tree satisfies the following three properties: n ’s value is greater than all values in its left subtree T L n ’s value is less than all values in its right subtree T R Both T L and T R are binary search trees Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

25 Binary Search Tree A binary search tree of names
Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

26 Shape of a binary search tree . .
Depends on its key values and their order of insertion. Insert the elements ‘J’ ‘E’ ‘F’ ‘T’ ‘A’ in that order. The first value to be inserted is put into the root node. ‘J’

27 Inserting ‘F’ into the BST
Thereafter, each value to be inserted begins by comparing itself to the value in the root node, moving left if it is less, or moving right if it is greater. This continues at each level until it can be inserted as a new leaf. ‘J’ ‘E’

28 Inserting ‘F’ into the BST
Begin by comparing ‘F’ to the value in the root node, moving left it is less, or moving right if it is greater. This continues until it can be inserted as a leaf. ‘J’ ‘E’ ‘F’

29 Inserting ‘F’ into the BST
Begin by comparing ‘T’ to the value in the root node, moving left it is less, or moving right if it is greater. This continues until it can be inserted as a leaf. ‘J’ ‘E’ ‘T’ ‘F’

30 Inserting ‘A’ into the BST
Begin by comparing ‘A’ to the value in the root node, moving left it is less, or moving right if it is greater. This continues until it can be inserted as a leaf. ‘J’ ‘E’ ‘T’ ‘A’ ‘F’

31 What binary search tree . . .
is obtained by inserting the elements ‘A’ ‘E’ ‘F’ ‘J’ ‘T’ in that order? ‘A’

32 Binary search tree . . . obtained by inserting
the elements ‘A’ ‘E’ ‘F’ ‘J’ ‘T’ in that order. ‘A’ ‘E’ ‘F’ ‘J’ ‘T’

33 Another binary search tree
‘J’ ‘E’ ‘T’ ‘A’ ‘H’ ‘M’ ‘K’ ‘P’ Add nodes containing these values in this order: ‘D’ ‘B’ ‘L’ ‘Q’ ‘S’ ‘V’ ‘Z’

34 Is ‘F’ in the binary search tree?
‘J’ ‘E’ ‘T’ ‘A’ ‘H’ ‘M’ ‘V’ ‘D’ ‘K’ ‘Z’ ‘P’ ‘B’ ‘L’ ‘Q’ ‘S’

35 The Height of Trees Definition of the level of a node n :
If n is the root of T , it is at level 1 If n is not the root of T , its level is 1 greater than the level of its parent Height of a tree T in terms of the levels of its nodes If T is empty, its height is 0 If T is not empty, its height is equal to the maximum level of its nodes Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

36 The Height of Trees Binary trees with the same nodes but different heights Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

37 Full, Complete, and Balanced Binary Trees
A full binary tree of height 3 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

38 Full, Complete, and Balanced Binary Trees
Definition of a full binary tree If T is empty, T is a full binary tree of height 0 If T is not empty and has height h > 0, T is a full binary tree if its root’s subtrees are both full binary trees of height h – 1 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

39 Full, Complete, and Balanced Binary Trees
A complete binary tree Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

40 Definitions Full Binary Tree: A binary tree in which all of the leaves are on the same level and every nonleaf node has two children

41 Definitions (cont.) Complete Binary Tree: A binary tree that is either full or full through the next-to-last level, with the leaves on the last level as far to the left as possible

42 Examples of Different Types of Binary Trees

43 The Maximum and Minimum Heights of a Binary Tree
The maximum height of an n -node binary tree is n Binary trees of height 3 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

44 The Maximum and Minimum Heights of a Binary Tree
Counting the nodes in a full binary tree of height h Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

45 Facts about Full Binary Trees
A full binary tree of height h ≥ 0 has 2 h – 1 nodes You cannot add nodes to a full binary tree without increasing its height The maximum number of nodes that a binary tree of height h can have is 2 h – 1 The minimum height of a binary tree with n nodes is [log 2 ( n + 1)] Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

46 The Maximum and Minimum Heights of a Binary Tree
Filling in the last level of a tree Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

47 Traversals of a Binary Tree
General form of recursive transversal algorithm Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

48 Traversals of a Binary Tree
Preorder traversal Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

49 Traversals of a Binary Tree
Three traversals of a binary tree Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

50 Printing all the Nodes in Order

51 Three Tree Traversals

52 Traversals of a Binary Tree
Inorder traversal. Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

53 Traversals of a Binary Tree
Postorder traversal. Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

54 Binary Tree Operations
Test whether a binary tree is empty. Get the height of a binary tree. Get the number of nodes in a binary tree. Get the data in a binary tree’s root. Set the data in a binary tree’s root. Add a new node containing a given data item to a binary tree. Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

55 Binary Tree Operations
Remove the node containing a given data item from a binary tree. Remove all nodes from a binary tree. Retrieve a specific entry in a binary tree. Test whether a binary tree contains a specific entry. Traverse the nodes in a binary tree in preorder, inorder, or postorder. Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

56 Binary Tree Operations
UML diagram for the class BinaryTree Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

57 Binary Tree Operations
Formalized specifications demonstrated in interface template for binary tree Listing 15-1 Note method names matching UML diagram Figure 15-12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

58 The ADT Binary Search Tree
ADT binary tree ill suited for search for specific item Binary search tree solves problem Properties of each node, n n ’s value greater than all values in left subtree TL n ’s value less than all values in right subtree TR Both TR and TL are binary search trees Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

59 The ADT Binary Search Tree
A binary search tree of names Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

60 The ADT Binary Search Tree
Binary search trees with the same data Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

61 The ADT Binary Search Tree
Binary search trees with the same data Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

62 The ADT Binary Search Tree
Binary search trees with the same data Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

63 Binary Search Tree Operations
Test whether binary search tree is empty. Get height of binary search tree. Get number of nodes in binary search tree. Get data in binary search tree’s root. Insert new item into binary search tree. Remove given item from binary search tree. Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

64 Binary Search Tree Operations
Remove all entries from binary search tree. Retrieve given item from binary search tree. Test whether binary search tree contains specific entry. Traverse items in binary search tree in Preorder Inorder Postorder. Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

65 Searching a Binary Search Tree
Search algorithm for binary search tree Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

66 Searching a Binary Search Tree
An array of names in sorted order Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

67 Creating a Binary Search Tree
Empty subtree where the search algorithm terminates when looking for Frank Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

68 Traversals of a Binary Search Tree
Algorithm Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

69 Deleting a Leaf Node Delete Z

70 Deleting a Node with One Child
Delete R

71 Deleting a Node with Two Children
Delete Q

72 Efficiency of Binary Search Tree Operations
The Big O for the retrieval, insertion, removal, and traversal operations of the ADT binary search tree Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013


Download ppt "CS Data Structures Chapter 15 Trees Mehmet H Gunes"

Similar presentations


Ads by Google