TreesTypes and Operations
1. General Trees2. Binary Search Trees3. AVL Trees4. Heap Trees
Agenda
Insertion◦FIFO◦LIFO◦Key-sequenced Insertion
DeletionChanging a General Tree into a Binary Tree
1. General Trees
Given the parent Node a new node may be inserted as
FIFO
Insertion
Data Structures: A Pseudocode Approach with C 5
First in-first out (FIFO) insertion
Given the parent Node a new node may be inserted as
FIFO LIFO
Insertion
Data Structures: A Pseudocode Approach with C 7
Last in-first out (LIFO) insertion
Given the parent Node a new node may be inserted as
FIFO LIFO Key-sequenced Insertion
Insertion
Data Structures: A Pseudocode Approach with C 9
Key-sequenced insertion
Insertion◦FIFO◦LIFO◦Key-sequenced Insertion
DeletionChanging a General Tree into a Binary Tree
1. General Trees
For general trees nodes to be deleted are restricted to be “leaves”
Otherwise a node maybe “purged”, i.e. a node is deleted along with all its children
Deletion
Insertion◦FIFO◦LIFO◦Key-sequenced Insertion
DeletionChanging a General Tree into a Binary Tree
1. General Trees
Changing the meaning of the two pointers:
Leftchild …..first childRightchild ….. Next siblings
Changing into Binary Trees
Data Structures: A Pseudocode Approach with C 14
Changing a General Tree to a Binary Tree
Data Structures: A Pseudocode Approach with C 15
Changing a General Tree to a Binary Tree
Data Structures: A Pseudocode Approach with C 16
Changing a General Tree to a Binary Tree
1. General Trees2. Binary Search Trees3. AVL Trees4. Heap Trees
Agenda
Basic ConceptsBST OperationsThreaded Trees
2. Binary Search Tree
All items in left subtree < rootAll items in right subtree > root
Basic Concepts
Binary Search Trees
A binary search tree Not a binary search tree
Binary Search TreeTwo binary search trees representing the same set:
Basic ConceptsBST OperationsThreaded Trees
2. Binary Search Tree
TraversalSearch
◦Smallest ……….. ?◦Largest …………?◦Specific element
InsertionDeletion
BST Operations
Inorder traversal of BST Print out all the keys in sorted order
Inorder: 2, 3, 4, 6, 7, 9, 13, 15, 17, 18, 20
TraversalSearch
◦Smallest ……….. ?◦Largest …………?◦Specific element
InsertionDeletion
BST Operations
findMin/ findMax Return the node containing the smallest element in the tree
Start at the root and goes left/right as long as there is a left/right child. The stopping point is the smallest/largest element
Time complexity = O(height of the tree)
Searching BST (specific elem) If we are searching for 15, then we are
done. If we are searching for a key < 15, then we
should search in the left subtree. If we are searching for
a key > 15, then we should search in the right subtree.
Searching BST
TraversalSearch
◦Smallest ……….. ?◦Largest …………?◦Specific element
InsertionDeletion
BST Operations
insert Proceed down the tree as you would with a find If X is found, do nothing (or update something) Otherwise, insert X at the last spot on the path traversed
Time complexity = O(height of the tree)
TraversalSearch
◦Smallest ……….. ?◦Largest …………?◦Specific element
InsertionDeletion
BST Operations
delete When we delete a node, we need to
consider how we take care of the children of the deleted node.
This has to be done such that the property of the search tree is maintained.
deleteThree cases:(1) the node is a leaf
◦ Delete it immediately
(2) the node has one sub-tree (right or left)◦ Adjust a pointer from the parent to bypass that node
delete(3) the node has 2 children
◦ replace the key of that node with the minimum element at the right subtree (or the maximum element at the left subtree)
◦ delete the minimum element Has either no child or only right child
because if it has a left child, that left child would be smaller and would have been chosen. So invoke case 1 or 2.
Time complexity = O(height of the tree)
delete
Basic ConceptsBST OperationsThreaded Trees
2. Binary Search Tree
Sparing recursion and stackMaking use of null right child of leaves to point to next node
Threaded Trees
1. General Trees2. Binary Search Trees3. AVL Trees4. Heap Trees
Agenda
PropertiesOperations
3. AVL Trees
It is a balanced binary tree (definition of Russian mathematicians Adelson-Velskii and Landis)
The height of its sub-trees differs by no more than one (its balance factor is -1, 0, or 1), and its subtrees are also balanced.
Properties of AVL Trees
A sub tree is called Left high (LH) if its balance is 1Equally high (EH) if it is 0Right high (RH) if it is -1
Properties of AVL Trees
Insertion and deletion are same as in BST
If unbalance occurs corresponding rotations must be performed to restore balance
Operations on AVL Trees
Balanced trees: AVL tree rotations Steps:
◦ Check if case is case 1 or 2 of the following and act accordingly
◦Case 1: tree is left high & out-of-balance is created by a adding node to the
left of the left sub-tree
◦ …… One right rotation is needed Rotate out-of-balance node right
Case 1: single R-rotation
h
h hhh
h+1h+2 h+
1
h+1
•Case 1 * Tree is left balanced unbalance is caused by node on the left of left sub-tree
Balanced trees: AVL tree rotations
◦Case 2: tree is left highout-of-balance is created by a adding node to
the right of the left sub-tree
◦ …… Two rotations are needed:Move from bottom of left sub-tree upwards
till an unbalanced node is found and rotate it left
Rotate left sub-tree right
Case 2: Double LR-rotation
h+2h+1
Add node to right of left balanced subtree
First rotation .. Left rotation of unbalanced node c
Second rotation … Right rotation of left sub-tree g
h
h
h h
hh+1
h+2
h+2h+
1h+1
End