Tirgul 5 Comparators AVL trees. Comparators You already know interface Comparable which is used to compare objects. By implementing the interface, one.

Slides:



Advertisements
Similar presentations
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.
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.
1 AVL-Trees (Adelson-Velskii & Landis, 1962) In normal search trees, the complexity of find, insert and delete operations in search trees is in the worst.
Chapter 4: Trees Part II - AVL Tree
AVL Trees COL 106 Amit Kumar Shweta Agrawal Slide Courtesy : Douglas Wilhelm Harder, MMath, UWaterloo
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.
CS202 - Fundamental Structures of Computer Science II
AA Trees another alternative to AVL trees. Balanced Binary Search Trees A Binary Search Tree (BST) of N nodes is balanced if height is in O(log N) A balanced.
Balanced Binary Search Trees
CSE332: Data Abstractions Lecture 7: AVL Trees Dan Grossman Spring 2010.
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:
Tirgul 10 Rehearsal about Universal Hashing Solving two problems from theoretical exercises: –T2 q. 1 –T3 q. 2.
Tirgul 5 AVL trees.
TCSS 342 AVL Trees v1.01 AVL Trees Motivation: we want to guarantee O(log n) running time on the find/insert/remove operations. Idea: keep the tree balanced.
AVL-Trees (Part 1: Single Rotations) Lecture COMP171 Fall 2006.
CSE 326: Data Structures AVL Trees
Binary Search Trees1 ADT for Map: Map stores elements (entries) so that they can be located quickly using keys. Each element (entry) is a key-value pair.
Tirgul 6 B-Trees – Another kind of balanced trees Problem set 1 - some solutions.
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.
Chapter 13 Binary Search Trees. Copyright © 2005 Pearson Addison-Wesley. All rights reserved Chapter Objectives Define a binary search tree abstract.
Tirgul 5 This tirgul is about AVL trees. You will implement this in prog-ex2, so pay attention... BTW - prog-ex2 is on the web. Start working on it!
AVL Trees ITCS6114 Algorithms and Data Structures.
CSE373: Data Structures & Algorithms Optional Slides: AVL Delete Dan Grossman Fall 2013.
Balanced Search Trees Chapter 27 Copyright ©2012 by Pearson Education, Inc. All rights reserved.
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.
Analysis of Red-Black Tree Because of the rules of the Red-Black tree, its height is at most 2log(N + 1). Meaning that it is a balanced tree Time Analysis:
Chapter 13 B Advanced Implementations of Tables – Balanced BSTs.
1 Balanced Trees There are several ways to define balance Examples: –Force the subtrees of each node to have almost equal heights –Place upper and lower.
Search Trees. Binary Search Tree (§10.1) A binary search tree is a binary tree storing keys (or key-element pairs) at its internal nodes and satisfying.
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.
11/7/20151 Balanced Trees Data Structures Ananda Gunawardena.
Chapter 19: Binary Search Trees or How I Learned to Love AVL Trees and Balance The Tree Group 6: Tim Munn.
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.
CSE373: Data Structures & Algorithms Lecture 7: AVL Trees Linda Shapiro Winter 2015.
Binary Search Trees1 Chapter 3, Sections 1 and 2: Binary Search Trees AVL Trees   
1 AVL Trees II Implementation. 2 AVL Tree ADT A binary search tree in which the balance factor of each node is 0, 1, of -1. Basic Operations Construction,
Keeping Binary Trees Sorted. Search trees Searching a binary tree is easy; it’s just a preorder traversal public BinaryTree findNode(BinaryTree node,
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.
Red-Black Trees an alternative to AVL trees. Balanced Binary Search Trees A Binary Search Tree (BST) of N nodes is balanced if height is in O(log N) A.
CSE332: Data Abstractions Lecture 7: AVL Trees
Lecture 15 Nov 3, 2013 Height-balanced BST Recall:
AA Trees.
Lec 13 Oct 17, 2011 AVL tree – height-balanced tree Other options:
Data Structures – LECTURE Balanced trees
CS202 - Fundamental Structures of Computer Science II
CS202 - Fundamental Structures of Computer Science II
AVL DEFINITION An AVL tree is a binary search tree in which the balance factor of every node, which is defined as the difference between the heights of.
CSE373: Data Structures & Algorithms Lecture 7: AVL Trees
Red-Black Trees 9/12/ :44 AM AVL Trees v z AVL Trees.
CSE373: Data Structures & Algorithms Lecture 7: AVL Trees
(edited by Nadia Al-Ghreimil)
Red-Black Trees 11/13/2018 2:07 AM AVL Trees v z AVL Trees.
AVL Trees CENG 213 Data Structures.
CS202 - Fundamental Structures of Computer Science II
Red-Black Trees 11/26/2018 3:42 PM AVL Trees v z AVL Trees.
CS202 - Fundamental Structures of Computer Science II
v z Chapter 10 AVL Trees Acknowledgement: These slides are adapted from slides provided with Data Structures and Algorithms in C++, Goodrich,
CSE373: Data Structures & Algorithms Lecture 5: AVL Trees
CSE 332: Data Abstractions AVL Trees
(edited by Nadia Al-Ghreimil)
CS202 - Fundamental Structures of Computer Science II
Red-Black Trees 2/24/ :17 AM AVL Trees v z AVL Trees.
AVL-Trees (Part 1).
Lecture 10 Oct 1, 2012 Complete BST deletion Height-balanced BST
Richard Anderson Spring 2016
Red-Black Trees 5/19/2019 6:39 AM AVL Trees v z AVL Trees.
CS202 - Fundamental Structures of Computer Science II
CS202 - Fundamental Structures of Computer Science II
Presentation transcript:

Tirgul 5 Comparators AVL trees

Comparators You already know interface Comparable which is used to compare objects. By implementing the interface, one can define a criterion by which the object can be compared to other objects – a.compareTo(b)>0 means a is “greater” than b. Problem: some classes may be compared by different criteria (e.g., flights may be compared by their price or by their duration).

Comparators Solution: a Comparator is an interface that defines a comparison criterion – c.compare(a, b)>0 means that a is “greater” than b by criterion c. A comparator can be given in the constructor of a data structure, and defines by which criterion the data structure would be managed. public class PriceComparator implements Comparator { public int compare(Object o1, Object o2) { if ((o1 instanceof Flight)&&(o2 instanceof Flight)) return ((Flight)o1).price-((Flight)o2).price; else throw new ClassCastException(); }

Binary search trees (reminder) Each tree node contains a value. For every node, its left subtree contains smaller values and its right subtree contains larger values. Advantage: If the tree is balanced, then every operation takes O(logn) time. Problem: The tree might get very unbalanced. For example, when inserting ordered numbers to the tree, the resulting height will be exactly n.

AVL Trees Balanced Trees: After insert and delete operations we “fix” the tree to keep it (almost) balanced. AVL Tree: A binary search tree with the following additional balance property: For any node in the tree, the height of the left and right subtrees can differ by 1 at most. Note that we require this balance property for every node, not just the root.

An AVL treeNot an AVL tree Example

The Maximal Height of an AVL Tree Definition S h : the size of the smallest AVL tree with height h. Claim : S h = S h- 1 +S h ( S 0 = 1 ; S 1 = 2 ) sketch of proof: The smallest AVL tree of height h is composed of a root, one subtree which is the smallest AVL tree of height h-1, and another subtree which is the smallest AVL tree of height h-2 (see next slide for illustration). Reminder: Fibonacci numbers are defined recursively by: F 0 = 0 ; F 1 = 1 ; F i = F i-1 + F i-2 [ Fact: F i > (1.3) i for i > 3 ] Claim : S h = F h The proof is by a simple induction, using the fact that S h = S h-1 + S h Theorem : For any AVL tree with n nodes and height h : h = O(logn). Proof:

Minimal AVL tree of height h Since the root’s height is h, one of its sons’ height must be h-1. From the balance condition, the other son has height either h-1 or h-2. From minimality, we get that the sons has S h-1 and S h-2 nodes, respectively. S h-1 S h-2 h-2h-1 h

How to maintain balance General rule: after an insert or delete operation, we fix all nodes that got unbalanced. Since the height of any subtree has changed by at most 1, if a node is not balanced this means that one son has a height larger by exactly two than the other son. Next we show the four possible cases that cause a height difference of 2. In all figures, marked nodes are unbalanced nodes.

(only) Four imbalance cases Case 1: The left subtree is higher than the right subtree, and this is caused by the left subtree of the left child. Case 2: The left subtree is higher than the right subtree, and this is caused by the right subtree of the left child. Case 4: The symmetric case to case 1 Case 3: The symmetric case to case 2 k2k2 k1k1 B C k1k1 k2k2 B A A C k2k2 k1k1 R P Q k1k1 k2k2 P R Q

The rotation takes O(1) time. Notice that the new tree is a legal search tree. For insert - it must be the case that subtree A had been increased, so after the rotation, k 1 has height as before the insert. For delete, it must be the case that C had been decreased, so after the rotation, k 1 has height shorter by 1. Single Rotation - Fixing case 1 k2k2 k1k1 A B C right rotation k2k2 k1k1 ABC

Example (caused by insertion) Notice that the tree height has not changed after the rotation (since it was an insert operation) k2k2 k1k1 C A B k2k2 k1k1 C A B

Single Rotation for Case 4 k1k1 k2k2 C B A left rotation k1k1 k2k2 CBA

Example (caused by deletion) Deleting X and performing a single rotation: For the rotation, k 1 is node A, and k 2 is node B. We make k 2 the root, and k 1 its left son. Notice that the tree height has changed after the rotation (since it was a delete operation). A B C X B CA

Fixing case 2 - first try... Single rotation doesn’t help - the tree is still not balanced! k2k2 k1k1 B A C right rotation k2k2 k1k1 B A C

Double Rotation to fix case 2 After insertion - original height (of the root) stays the same. k3k3 k1k1 A D k2k2 BC k3k3 k1k1 AD k2k2 BC k3k3 k1k1 A D k2k2 B C left rotation on k 1 right rotation on k 3

Example (caused by insertion) k3k3 k1k1 D A B k2k k3k3 k1k1 D A B k2k2

Double Rotation to fix case 3 k1k1 k3k3 D A right rotation on k 3 left rotation on k 1 k2k2 BC k3k3 k1k1 AD k2k2 BC

Insert and delete operations First, we insert/delete the element, as in regular binary search tree, and then we re-balance. Observation: only nodes on the path from the root to the leaf we changed may become unbalanced. If we went left from the root, then the right subtree was not changed, thus it remains balanced. This continues when we go down the tree.

Insert and delete operations (continued) After adding/deleting a leaf, start to go up back to the root, and while going up, re-balance every node on the way (if needed). The path is O(logn) long, and each node balance takes O(1), thus the total time for every operation is O(logn). In fact, in the insertion we can do better - after the first balance (when going up), the subtree that was balanced has height as before, so all higher nodes are now balanced again. We can find this node in the pass down to the leaf, so one pass is enough.

Delete requires two passes In more sophisticated balanced trees (like red- black and B-trees), delete also requires one pass. Here this is not the case. For example, deleting X in the following tree: L DM A XB C G E F I HJ K

A note about implementation In programming exercise 2, you will be required to implement a balanced tree. Converting an algorithm to a real program requires much thought. When done correctly, many bugs are avoided. Important principles: –Do it as general as possible, without cut & paste. Although more complicated to design, it will reduce your total work time. –Methods should be short and simple. If some method becomes too complicated, you missed something, and this is a sure bug!