470 likes | 601 Views
Trees Types and Operations. Agenda. General Trees Binary Search Trees AVL Trees Heap Trees. 1. General Trees. Insertion FIFO LIFO Key-sequenced Insertion Deletion Changing a General Tree into a Binary Tree. Insertion. Given the parent Node a new node may be inserted as FIFO.
E N D
Agenda • General Trees • Binary Search Trees • AVL Trees • Heap Trees
1. General Trees • Insertion • FIFO • LIFO • Key-sequenced Insertion • Deletion • Changing a General Tree into a Binary Tree
Insertion Given the parent Node a new node may be inserted as • FIFO
First in-first out (FIFO) insertion Data Structures: A Pseudocode Approach with C
Insertion Given the parent Node a new node may be inserted as • FIFO • LIFO
Last in-first out (LIFO) insertion Data Structures: A Pseudocode Approach with C
Insertion Given the parent Node a new node may be inserted as • FIFO • LIFO • Key-sequenced Insertion
Key-sequenced insertion Data Structures: A Pseudocode Approach with C
1. General Trees • Insertion • FIFO • LIFO • Key-sequenced Insertion • Deletion • Changing a General Tree into a Binary Tree
Deletion • 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
1. General Trees • Insertion • FIFO • LIFO • Key-sequenced Insertion • Deletion • Changing a General Tree into a Binary Tree
Changing into Binary Trees • Changing the meaning of the two pointers: • Leftchild …..first child • Rightchild ….. Next siblings
Changing a General Tree to a Binary Tree Data Structures: A Pseudocode Approach with C
Changing a General Tree to a Binary Tree Data Structures: A Pseudocode Approach with C
Changing a General Tree to a Binary Tree Data Structures: A Pseudocode Approach with C
Agenda • General Trees • Binary Search Trees • AVL Trees • Heap Trees
2. Binary Search Tree • Basic Concepts • BST Operations • Threaded Trees
Basic Concepts • All items in left subtree < root • All items in right subtree > root
Binary Search Trees A binary search tree Not a binary search tree
Binary Search Tree Two binary search trees representing the same set:
2. Binary Search Tree • Basic Concepts • BST Operations • Threaded Trees
BST Operations • Traversal • Search • Smallest ……….. ? • Largest …………? • Specific element • Insertion • Deletion
Inorder traversal of BST • Print out all the keys in sorted order Inorder: 2, 3, 4, 6, 7, 9, 13, 15, 17, 18, 20
BST Operations • Traversal • Search • Smallest ……….. ? • Largest …………? • Specific element • Insertion • Deletion
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.
BST Operations • Traversal • Search • Smallest ……….. ? • Largest …………? • Specific element • Insertion • Deletion
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)
BST Operations • Traversal • Search • Smallest ……….. ? • Largest …………? • Specific element • Insertion • Deletion
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.
delete Three 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)
2. Binary Search Tree • Basic Concepts • BST Operations • Threaded Trees
Threaded Trees • Sparing recursion and stack • Making use of null right child of leaves to point to next node
Agenda • General Trees • Binary Search Trees • AVL Trees • Heap Trees
3. AVL Trees • Properties • Operations
Properties of AVL Trees • It is a balanced binary tree(definition of Russian mathematicians Adelson-VelskiiandLandis) • 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 1 • Equally high (EH) if it is 0 • Right high (RH) if it is -1
Operations on AVL Trees • Insertion and deletion are same as in BST • If unbalance occurs corresponding rotations must be performed to restore balance
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 • Case 1 * • Tree is left balanced • unbalance is caused by node on the left of left sub-tree h+2 h+1 h+1 h+1 h h h h h
Balanced trees: AVL tree rotations • Case 2: • tree is left high • out-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 Add node to right of left balanced subtree h+2 h+1 h+2 h+2 h h h+1 h+1 h+1 h h h First rotation .. Left rotation of unbalanced node c Second rotation … Right rotation of left sub-tree g