AVL Trees ITCS6114 Algorithms and Data Structures.

Slides:



Advertisements
Similar presentations
AVL Trees CSE 373 Data Structures Lecture 8. 12/26/03AVL Trees - Lecture 82 Readings Reading ›Section 4.4,
Advertisements

AVL Trees1 Part-F2 AVL Trees v z. AVL Trees2 AVL Tree Definition (§ 9.2) AVL trees are balanced. An AVL Tree is a binary search tree such that.
AVL Trees COL 106 Amit Kumar Shweta Agrawal Slide Courtesy : Douglas Wilhelm Harder, MMath, UWaterloo
Trees Types and Operations
Time Complexity of Basic BST Operations Search, Insert, Delete – These operations visit the nodes along a root-to- leaf path – The number of nodes encountered.
AVL Trees CS II – Fall /8/2010. Announcements HW#2 is posted – Uses AVL Trees, so you have to implement an AVL Tree class. Most of the code is provided.
Data Structures and Algorithms
CS202 - Fundamental Structures of Computer Science II
4.5 AVL Trees  A tree is said to be balanced if for each node, the number of nodes in the left subtree and the number of nodes in the right subtree differ.
CSE332: Data Abstractions Lecture 7: AVL Trees Tyler Robison Summer
AVL-Trees (Part 1) COMP171. AVL Trees / Slide 2 * Data, a set of elements * Data structure, a structured set of elements, linear, tree, graph, … * Linear:
1 Balanced Search Trees  several varieties  AVL trees  trees  Red-Black trees  B-Trees (used for searching secondary memory)  nodes are added.
CSC 213 Lecture 7: Binary, AVL, and Splay Trees. Binary Search Trees (§ 9.1) Binary search tree (BST) is a binary tree storing key- value pairs (entries):
AVL-Trees (Part 1: Single Rotations) Lecture COMP171 Fall 2006.
1 Binary Search Trees Implementing Balancing Operations –AVL Trees –Red/Black Trees Reading:
CSE 326: Data Structures AVL Trees
AVL Trees / Slide 1 Balanced Binary Search Tree  Worst case height of binary search tree: N-1  Insertion, deletion can be O(N) in the worst case  We.
AVL trees. AVL Trees We have seen that all operations depend on the depth of the tree. We don’t want trees with nodes which have large height This can.
CSC 2300 Data Structures & Algorithms February 13, 2007 Chapter 4. Trees.
1 CSE 326: Data Structures Trees Lecture 7: Wednesday, Jan 23, 2003.
INTRODUCTION TO AVL TREES P. 839 – 854. INTRO  Review of Binary Trees: –Binary Trees are useful for quick retrieval of items stored in the tree –order.
1 AVL-Trees: Motivation Recall our discussion on BSTs –The height of a BST depends on the order of insertion E.g., Insert keys 1, 2, 3, 4, 5, 6, 7 into.
1 Joe Meehean.  BST efficiency relies on height lookup, insert, delete: O(height) a balanced tree has the smallest height  We can balance an unbalanced.
Starting at Binary Trees
1 Trees 4: AVL Trees Section 4.4. Motivation When building a binary search tree, what type of trees would we like? Example: 3, 5, 8, 20, 18, 13, 22 2.
COSC 2P03 Week 51 Representation of an AVL Node class AVLNode { AVLnode left; AVLnode right; int height; int height(AVLNode T) { return T == null? -1 :
Binary trees -2 Chapter Threaded trees (depth first) Binary trees have a lot of wasted space: the leaf nodes each have 2 null pointers We can.
Lecture 11COMPSCI.220.FS.T Balancing an AVLTree Two mirror-symmetric pairs of cases to rebalance the tree if after the insertion of a new key to.
D. ChristozovCOS 221 Intro to CS II AVL Trees 1 AVL Trees: Balanced BST Binary Search Trees Performance Height Balanced Trees Rotation AVL: insert, delete.
Data Structures AVL Trees.
AVL Trees An AVL tree is a binary search tree with a balance condition. AVL is named for its inventors: Adel’son-Vel’skii and Landis AVL tree approximates.
AVL Trees / Slide 1 Height-balanced trees AVL trees height is no more than 2 log 2 n (n is the number of nodes) Proof based on a recurrence formula for.
AVL trees1 AVL Trees Height of a node : The height of a leaf is 1. The height of a null pointer is zero. The height of an internal node is the maximum.
Chapter 6 (cont’) 1 AVL Tree. Search Trees 2 Two standard search trees: Binary Search Trees (non-balanced) All items in left sub-tree are less than root.
CSE373: Data Structures & Algorithms Lecture 7: AVL Trees Linda Shapiro Winter 2015.
AVL Trees. AVL Tree In computer science, an AVL tree is the first-invented self-balancing binary search tree. In an AVL tree the heights of the two child.
AVL Trees AVL (Adel`son-Vel`skii and Landis) tree = – A BST – With the property: For every node, the heights of the left and right subtrees differ at most.
Balancing Binary Search Trees. Balanced Binary Search Trees A BST is perfectly balanced if, for every node, the difference between the number of nodes.
CE 221 Data Structures and Algorithms Chapter 4: Trees (AVL Trees) Text: Read Weiss, §4.4 1Izmir University of Economics.
COSC 2007 Data Structures II Chapter 13 Advanced Implementation of Tables II.
Lecture 15 Nov 3, 2013 Height-balanced BST Recall:
Lec 13 Oct 17, 2011 AVL tree – height-balanced tree Other options:
Balancing Binary Search Trees
UNIT III TREES.
CSIT 402 Data Structures II
CS202 - Fundamental Structures of Computer Science II
CS202 - Fundamental Structures of Computer Science II
Introduction Applications Balance Factor Rotations Deletion Example
Chapter 29 AVL Trees.
CSE373: Data Structures & Algorithms Lecture 7: AVL Trees
AVL Tree Mohammad Asad Abbasi Lecture 12
Trees (Chapter 4) Binary Search Trees - Review Definition
AVL Trees "The voyage of discovery is not in seeking new landscapes but in having new eyes. " - Marcel Proust.
CSE373: Data Structures & Algorithms Lecture 7: AVL Trees
Monday, April 16, 2018 Announcements… For Today…
AVL Trees CENG 213 Data Structures.
Friday, April 13, 2018 Announcements… For Today…
Instructor: Lilian de Greef Quarter: Summer 2017
CS202 - Fundamental Structures of Computer Science II
CSE373: Data Structures & Algorithms Lecture 5: AVL Trees
AVL Trees CSE 373 Data Structures.
Data Structures Lecture 21 Sohail Aslam.
AVL Trees (a few more slides)
Lecture 10 Oct 1, 2012 Complete BST deletion Height-balanced BST
ITCS6114 Algorithms and Data Structures
Richard Anderson Spring 2016
CSE 373 Data Structures Lecture 8
CS202 - Fundamental Structures of Computer Science II
CS202 - Fundamental Structures of Computer Science II
Self-Balancing Search Trees
Presentation transcript:

AVL Trees ITCS6114 Algorithms and Data Structures

AVL Trees2 Balanced and unbalanced BST Is this “balanced”?

AVL Trees3 Perfect Balance Want a complete tree after every operation ›tree is full except possibly in the lower right This is expensive ›For example, insert 2 in the tree on the left and then rebuild as a complete tree Insert 2 & complete tree

AVL Trees4 AVL - Good but not Perfect Balance AVL trees are height-balanced binary search trees Balance factor of a node ›height(left subtree) - height(right subtree) An AVL tree has balance factor calculated at every node ›For every node, heights of left and right subtree can differ by no more than 1 ›Store current heights in each node

AVL Trees5 Node Heights height of node = h balance factor = h left -h right empty height = height=2 BF=1-0= Tree A (AVL)Tree B (AVL)

AVL Trees6 Node Heights after Insert height of node = h balance factor = h left -h right empty height = balance factor 1-(-1) = 2 Tree A (AVL)Tree B (not AVL)

AVL Trees7 Insert and Rotation in AVL Trees Insert operation may cause balance factor to become 2 or –2 for some node ›only nodes on the path from insertion point to root node have possibly changed in height ›So after the Insert, go back up to the root node by node, updating heights ›If a new balance factor (the difference h left - h right ) is 2 or –2, adjust tree by rotation around the node

AVL Trees8 Single Rotation in an AVL Tree

AVL Trees9 Let the node that needs rebalancing be . There are 4 cases: Outside Cases (require single rotation) : 1. Insertion into left subtree of left child of . 2. Insertion into right subtree of right child of . Inside Cases (require double rotation) : 3. Insertion into right subtree of left child of . 4. Insertion into left subtree of right child of . The rebalancing is performed through four separate rotation algorithms. Insertions in AVL Trees

AVL Trees10 j k XY Z Consider a valid AVL subtree AVL Insertion: Outside Case h h h

AVL Trees11 j k X Y Z Inserting into X destroys the AVL property at node j AVL Insertion: Outside Case h h+1h

AVL Trees12 j k X Y Z Do a “right rotation” AVL Insertion: Outside Case h h+1h

AVL Trees13 j k X Y Z Do a “right rotation” Single right rotation h h+1h

AVL Trees14 j k X Y Z “Right rotation” done! (“Left rotation” is mirror symmetric) Outside Case Completed AVL property has been restored! h h+1 h

AVL Trees15 j k XY Z AVL Insertion: Inside Case Consider a valid AVL subtree h h h

AVL Trees16 Inserting into Y destroys the AVL property at node j j k X Y Z AVL Insertion: Inside Case Does “right rotation” restore balance? h h+1h

AVL Trees17 j k X Y Z “Right rotation” does not restore balance… now k is out of balance AVL Insertion: Inside Case h h+1 h

AVL Trees18 Consider the structure of subtree Y… j k X Y Z AVL Insertion: Inside Case h h+1h

AVL Trees19 j k X V Z W i Y = node i and subtrees V and W AVL Insertion: Inside Case h h+1h h or h-1

AVL Trees20 j k X V Z W i AVL Insertion: Inside Case We will do a left-right “double rotation”...

AVL Trees21 j k X V Z W i Double rotation : first rotation left rotation complete

AVL Trees22 j k X V Z W i Double rotation : second rotation Now do a right rotation

AVL Trees23 j k X V Z W i Double rotation : second rotation right rotation complete Balance has been restored h h h or h-1

AVL Trees24 Implementation balance (1,0,-1) key right left No need to keep the height; just the difference in height, i.e. the balance factor; this has to be modified on the path of insertion even if you don’t perform rotations Once you have performed a rotation (single or double) you won’t need to go back up the tree

AVL Trees25 Insertion in AVL Trees Insert at the leaf (as for all BST) ›only nodes on the path from insertion point to root node have possibly changed in height ›So after the Insert, go back up to the root node by node, updating heights ›If a new balance factor (the difference h left - h right ) is 2 or –2, adjust tree by rotation around the node

AVL Trees26 Insert in AVL trees Insert(T : reference tree pointer, x : element) : { if T = null then {T := new tree; T.data := x; height := 0; return;} case T.data = x : return ; //Duplicate do nothing T.data > x : Insert(T.left, x); if ((height(T.left)- height(T.right)) = 2){ if (T.left.data > x ) then //outside case T = RotatefromLeft (T); else //inside case T = DoubleRotatefromLeft (T);} T.data < x : Insert(T.right, x); code similar to the left case Endcase T.height := max(height(T.left),height(T.right)) +1; return; }

AVL Trees27 Example of Insertions in an AVL Tree Insert 5, 40

AVL Trees28 Example of Insertions in an AVL Tree Now Insert 45

AVL Trees29 Single rotation (outside case) Imbalance Now Insert 34

AVL Trees30 Double rotation (inside case) Imbalance Insertion of

AVL Trees31 AVL Tree Deletion Similar but more complex than insertion ›Rotations and double rotations needed to rebalance ›Imbalance may propagate upward so that many rotations may be needed.

AVL Trees32 Arguments for AVL trees: 1.Search is O(log N) since AVL trees are always balanced. 2.Insertion and deletions are also O(logn) 3.The height balancing adds no more than a constant factor to the speed of insertion. Arguments against using AVL trees: 1.Difficult to program & debug; more space for balance factor. 2.Asymptotically faster but rebalancing costs time. 3.Most large searches are done in database systems on disk and use other structures (e.g. B-trees). Pros and Cons of AVL Trees