Date post: | 11-Aug-2015 |
Category: |
Engineering |
Upload: | arch-sidz |
View: | 28 times |
Download: | 0 times |
tem 2
OverviewOverview
• Trees.
• Terminology.
• Traversal of Binary Trees.
• Expression Trees.
• Binary Search Trees.
tem 3
TreesTrees
• Family Trees.
• Organisation Structure Charts.
• Program Design.
• Structure of a chapter in a book.
tem 16
TraversalTraversal
• Systematic way of visiting all the nodes.
• Methods:– Preorder, Inorder, and Postorder
• They all traverse the left subtree before the right subtree.
• The name of the traversal method depends on when the node is visited.
tem 17
Preorder TraversalPreorder Traversal
• Visit the node.
• Traverse the left subtree.
• Traverse the right subtree.
tem 18
Example: PreorderExample: Preorder
31
43
64
20 40 56
28 33 47 59
89
43 31 20 28 40 33 64 56 47 59 89
tem 19
Inorder TraversalInorder Traversal
• Traverse the left subtree.
• Visit the node.
• Traverse the right subtree.
tem 20
Example: InorderExample: Inorder
31
43
64
20 40 56
28 33 47 59
89
20 3128 4033 43 5647 59 64 89
tem 21
Postorder TraversalPostorder Traversal
• Traverse the left subtree.
• Traverse the right subtree.
• Visit the node.
tem 22
Example: PostorderExample: Postorder
31
43
64
20 40 56
28 33 47 59
89
2028 40 3133 5647 59 6489 43
tem 23
Expression TreeExpression Tree
• A Binary Tree built with operands and operators.
• Also known as a parse tree.
• Used in compilers.
tem 25
NotationNotation
• Preorder– Prefix Notation
• Inorder– Infix Notation
• Postorder– Postfix Notation
tem 27
7
//
/
1
+
/
3 *
6
4
Example: PostfixExample: Postfix
Recall: Reverse Polish Notation
1
1 3
3
6
6
7
7
*
*
4
4
/
/
+
+
tem 29
Binary Search Tree Binary Search Tree
A Binary Tree such that:
• Every node entry has a unique key.
• All the keys in the left subtree of a node are less than the key of the node.
• All the keys in the right subtree of a node are greater than the key of the node.
tem 32
InsertInsert
• Create new node for the item.
• Find a parent node.
• Attach new node as a leaf.
tem 35
Search: ChecklistSearch: Checklist
• if target key is less than current node’s key, search the left sub-tree.
• else, if target key is greater than current node’s key, search the right sub-tree.
• returns:– if found, pointer to node containing target key.– otherwise, NULL pointer.
tem 38
RevisionRevision
• Binary Tree
• Preorder, Inorder, Postorder Traveral
• Expression Trees
• Prefix, Infix, and Postfix notation
• Insert and Search
tem 39
Revision: ReadingRevision: Reading• Kruse 9
• Standish 9
PreparationPreparationNext lecture: Hash Tables
• Read Chapter 8.6 in Kruse et al.
tem 42
Recall - Binary Search Tree Recall - Binary Search Tree
A Binary Tree such that:
• Every node entry has a unique key.
• All the keys in the left subtree of a node are less than the key of the node.
• All the keys in the right subtree of a node are greater than the key of the node.
tem 46
InorderInorder
• Inorder traversal of a Binary Search Tree always gives the sorted order of the keys.
initially, pointerto root node
tem 47
InorderInorder
• Inorder traversal of a Binary Search Tree always gives the sorted order of the keys.
tem 56
InorderInorder
void printInorder(TreeNode* nodePtr){ if (nodePtr != NULL){ printInorder(nodePtr->leftPtr); printf(“ %f”, nodePtr->key); printInorder(nodePtr->rightPtr); }}
nodePtr
tem 57
InorderInorder
void printInorder(TreeNode* nodePtr){ if (nodePtr != NULL){ printInorder(nodePtr->leftPtr); printf(“ %f”, nodePtr->key); printInorder(nodePtr->rightPtr); }}
nodePtr
tem 58
InorderInorder
void printInorder(TreeNode* nodePtr){ if (nodePtr != NULL){ printInorder(nodePtr->leftPtr); printf(“ %f”, nodePtr->key); printInorder(nodePtr->rightPtr); }}
nodePtr
tem 59
InorderInorder
void printInorder(TreeNode* nodePtr){ if (nodePtr != NULL){ printInorder(nodePtr->leftPtr); printf(“ %f”, nodePtr->key); printInorder(nodePtr->rightPtr); }}
nodePtr
tem 60
InorderInorder
void printInorder(TreeNode* nodePtr){ if (nodePtr != NULL){ printInorder(nodePtr->leftPtr); printf(“ %f”, nodePtr->key); printInorder(nodePtr->rightPtr); }}
nodePtr
tem 61
InorderInorder
void printInorder(TreeNode* nodePtr){ if (nodePtr != NULL){ printInorder(nodePtr->leftPtr); printf(“ %f”, nodePtr->key); printInorder(nodePtr->rightPtr); }}
nodePtr
tem 63
InorderInorder
void printInorder(TreeNode* nodePtr){ if (nodePtr != NULL){ printInorder(nodePtr->leftPtr); printf(“ %f”, nodePtr->key); printInorder(nodePtr->rightPtr); }}
nodePtr
tem 74
Search: ChecklistSearch: Checklist
• if target key is less than current node’s key, search the left sub-tree.
• else, if target key is greater than current node’s key, search the right sub-tree.
• returns:– if found, or if target key is equal to current
node’s key, a pointer to node containing target key.
– otherwise, NULL pointer.
tem 77
InsertInsert
• Create new node for the item.
• Find a parent node.
• Attach new node as a leaf.
tem 78
SortingSorting
To sort a sequence of items:
• Insert items into a Binary Search Tree.
• Then Inorder Traverse the tree.
tem 79
Sorting: AnalysisSorting: Analysis
• Insert (i+1)th item: ~ log2(i) comparisons
~ log2 n
• Average Case: O(n log(n))
tem 84
SortSort
0.51.0 0.7 2.12.5 3.6
1.0
2.50.5
0.7
Sort the following list into a binary search tree
tem 85
SortSort
1.0
2.50.5
0.7 3.6
Sort the following list into a binary search tree
0.51.0 0.7 2.12.5 3.6
tem 86
SortSort
0.51.0 0.7 2.12.5 3.6
1.0
2.50.5
0.7 3.62.1
Sort the following list into a binary search tree
tem 87
Sorting: AnalysisSorting: Analysis
• Insert (i+1)th item: ~ i comparisons
Example:
Insert: 1, 3, 7, 9, 11, 15
• Worst Case: O(n2)