* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Trees Types and Operations
		                    
		                    
								Survey							
                            
		                
		                
                            
                            
								Document related concepts							
                        
                        
                    
						
						
							Transcript						
					
					1. 2. 3. 4. General Trees Binary Search Trees AVL Trees Heap Trees  Insertion ◦ FIFO ◦ LIFO ◦ Key-sequenced Insertion  Deletion  Changing a General Tree into a Binary Tree 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 5 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 7 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 9  Insertion ◦ FIFO ◦ LIFO ◦ Key-sequenced Insertion  Deletion  Changing a General Tree into a Binary Tree  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  Insertion ◦ FIFO ◦ LIFO ◦ Key-sequenced Insertion  Deletion  Changing a General Tree into a Binary Tree  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 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 1. 2. 3. 4. General Trees Binary Search Trees AVL Trees Heap Trees  Basic Concepts  BST Operations  Threaded Trees  All items in left subtree < root  All items in right subtree > root A binary search tree Not a binary search tree Two binary search trees representing the same set:  Basic Concepts  BST Operations  Threaded Trees  Traversal  Search ◦ Smallest ……….. ? ◦ Largest …………? ◦ Specific element  Insertion  Deletion  Print out all the keys in sorted order Inorder: 2, 3, 4, 6, 7, 9, 13, 15, 17, 18, 20  Traversal  Search ◦ Smallest ……….. ? ◦ Largest …………? ◦ Specific element  Insertion  Deletion    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) 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  Traversal  Search ◦ Smallest ……….. ? ◦ Largest …………? ◦ Specific element  Insertion  Deletion     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)  Traversal  Search ◦ Smallest ……….. ? ◦ Largest …………? ◦ Specific element  Insertion  Deletion  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. 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 (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)  Basic Concepts  BST Operations  Threaded Trees  Sparing recursion and stack  Making use of null right child of leaves to point to next node 1. 2. 3. 4. General Trees Binary Search Trees AVL Trees Heap Trees  Properties  Operations  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. 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  Insertion and deletion are same as in BST  If unbalance occurs corresponding rotations must be performed to restore balance  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 * 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 ◦ 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 Add node to right of left balanced subtree h+2 h+1 h+1h h h h+2 h+2 h+1 h+1 h  First rotation .. Left rotation of unbalanced node c  Second rotation … Right rotation of left sub-tree g h