Interval Trees Store intervals of the form [li,ri], li <= ri.

Slides:



Advertisements
Similar presentations
Splay Trees Binary search trees.
Advertisements

Interval Heaps Complete binary tree. Each node (except possibly last one) has 2 elements. Last node has 1 or 2 elements. Let a and b be the elements in.
AVL Trees binary tree for every node x, define its balance factor
Part II. Delete an Node from an AVL Tree Consider to delete
Splay Tree Algorithm Mingda Zhao CSC 252 Algorithms Smith College Fall, 2000.
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.
Solution of Assignment 3 and Midterm CSC2100B. AVL Tree A binary search tree is a binary tree in which every node has larger key than the nodes in its.
AVL Tree Smt Genap Outline AVL Tree ◦ Definition ◦ Properties ◦ Operations Smt Genap
CS202 - Fundamental Structures of Computer Science II
AVL Trees Balanced Trees. AVL Tree Property A Binary search tree is an AVL tree if : –the height of the left subtree and the height of the right subtree.
Original Tree:
Insert A tree starts with the dummy node D D 200 D 7 Insert D
Dynamic Dictionaries Primary Operations:  Get(key) => search  Insert(key, element) => insert  Delete(key) => delete Additional operations:  Ascend()
Lec 6 Feb 17, 2011  Section 2.5 of text (review of heap)  Chapter 3.
B-Tree B-Tree is an m-way search tree with the following properties:
Chapter 4: Trees AVL Trees Lydia Sinapova, Simpson College Mark Allen Weiss: Data Structures and Algorithm Analysis in Java.
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.
Chapter 9 contd. Binary Search Trees Anshuman Razdan Div of Computing Studies
1 B-Trees Section AVL (Adelson-Velskii and Landis) Trees AVL tree is binary search tree with balance condition –To ensure depth of the tree is.
Leftist Trees Linked binary tree. Can do everything a heap can do and in the same asymptotic complexity.  insert  remove min (or max)  initialize Can.
AVL Trees Neil Ghani University of Strathclyde. General Trees Recall a tree is * A leaf storing an integer * A node storing a left subtree, an integer.
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.
Balanced Search Trees Problem: Efficiency of BST is related to tree’s height.  search, insert and remove follow a path from root to desired location 
CSE221/ICT221 Analysis and Design of Algorithms CSE221/ICT221 Analysis and Design of Algorithms Analysis of Algorithm using Tree Data Structure Asst.Prof.
Segment Trees Basic data structure in computational geometry. Computational geometry.  Computations with geometric objects.  Points in 1-, 2-, 3-, d-space.
Data Structure II So Pak Yeung Outline Review  Array  Sorted Array  Linked List Binary Search Tree Heap Hash Table.
Data Structures AVL Trees.
AVL Trees It’s a balancing act. Binary Tree Problems If you get either sorted or reverse-sorted input, you essentially get a linked list (always following.
Find Find 13: Find Min and Find Max Find Min: Find Max:
© Copyright 2012 by Pearson Education, Inc. All Rights Reserved. 1 Chapter 20 AVL Trees.
Priority Search Trees Keys are pairs (x,y). Basic (search, insert, delete) and rectangle operations. Two varieties.  Based on a balanced binary search.
CSE 3358 NOTE SET 13 Data Structures and Algorithms.
AVL TREES By Asami Enomoto CS 146 AVL Tree is… named after Adelson-Velskii and Landis the first dynamically balanced trees to be propose Binary search.
Heap Sort Uses a heap, which is a tree-based data type Steps involved: Turn the array into a heap. Delete the root from the heap and insert into the array,
CPS120: Introduction to Computer Science Nell Dale John Lewis Abstract Data Types.
AVL Tree: Balanced Binary Search Tree 9.
3.1 Height-Balanced Trees 3.2 Weight-Balanced Trees
Lecture 15 Nov 3, 2013 Height-balanced BST Recall:
G64ADS Advanced Data Structures
Interval Trees Store intervals of the form [li,ri], li <= ri.
Binary search tree. Removing a node
Splay Trees Binary search trees.
CS202 - Fundamental Structures of Computer Science II
CS202 - Fundamental Structures of Computer Science II
AVL Trees binary tree for every node x, define its balance factor
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.
Introduction Applications Balance Factor Rotations Deletion Example
Chapter 26 AVL Trees Jung Soo (Sue) Lim Cal State LA.
Chapter 29 AVL Trees.
Best-fit bin packing in O(n log n) time
Binary Search Tree In order Pre order Post order Search Insertion
Splay Trees Binary search trees.
D I s , a ·.... l8l8.
Segment tree and Interval Tree
Wednesday, April 18, 2018 Announcements… For Today…
CS202 - Fundamental Structures of Computer Science II
Search Sorted Array: Binary Search Linked List: Linear Search
UMBC CSMC 341 Red-Black-Trees-1
CS223 Advanced Data Structures and Algorithms
!'!!. = pt >pt > \ ___,..___,..
I ll I
AVL Search Tree put(9)
CMSC 341 Splay Trees.
CS223 Advanced Data Structures and Algorithms
CS202 - Fundamental Structures of Computer Science II
' 1 A ./.\.l+./.\.l
AVL Tree By Rajanikanth B.
CS202 - Fundamental Structures of Computer Science II
A Heap Is Efficiently Represented As An Array
CS202 - Fundamental Structures of Computer Science II
Presentation transcript:

Interval Trees Store intervals of the form [li,ri], li <= ri. An interval is stored in exactly 1 node. So, O(n) nodes. 3 versions. Differing capability. Note, when l = r, interval intersection becomes point enclosure.

Version 1 Store intervals of the form [li,ri], li <= ri. At least 1 interval per node. Static interval set. Report all intervals that intersect/overlap a given interval [l,r]. Note, when l = r, interval intersection becomes point enclosure.

Definition—Version 1 A binary tree. Each node v has a point v.pt and two lists v.left and v.right. u.pt < v.pt for nodes u in left subtree of v. u.pt > v.pt for nodes u in right subtree of v. So, it is a binary search tree on pt.

Definition—Version 1 Intervals with ri < v.pt are stored in the left subtree of v. Intervals with li > v.pt are stored in the right subtree of v. Intervals with li <= v.pt <= ri are stored in v. v.left has these intervals sorted by li. v.right has these intervals sorted by ri. Note sorted doesn’t imply an array organization necessarily. Could be a red-black tree, implicitly sorted.

Example e a c b f d v.pt = 4 L = {a, e} R = {d} v.left = {c, f, b} 1 e 3 a 2 4 c 6 b f 5 7 d 4 L R v v.pt = 4 L = {a, e} R = {d} v.left = {c, f, b} v.right = {c,b,f}

Properties Each interval is stored in exactly one node. Each node stores between 1 and n intervals. Number of nodes is O(n). Sum of sizes of left and right lists is O(n). Tree height depends on how you choose the points v.pt.

Selection of v.pt v is the median of the end points of the intervals stored in the subtree rooted at v. 1 e 3 a 2 4 c 6 b f 5 7 d End points = {1, 2, 3, 4, 5, 6, 7} Use 4 as v.pt.

Selection of v.pt With median selection, tree height is O(log n). Median selection is possible only for static interval set. So, no inserts/deletes. Could relax to support insert/delete.

Find All Overlapping Intervals Query interval is [l,r]. v.pt e [l,r] All intervals in v overlap. Search L and R for additional overlapping intervals. 4 L R v l r

Find All Overlapping Intervals v.pt < l Intervals in v with ri >= l overlap. No interval in L overlaps. Search R for additional overlapping intervals. 4 L R v l r Search v.right for overlapping intervals. If v.right is a sorted array, start at right end of array and pick off the overlapping intervals. Time is 1 + number of overlapping intervals in v.right.

Find All Overlapping Intervals v.pt > r Intervals in v with li <= r overlap. No interval in R overlaps. Search L for additional overlapping intervals. 4 L R v l r Search v.left for overlapping intervals. If v.left is a sorted array, start at left end of array and pick off the overlapping intervals. Time is 1 + number of overlapping intervals in v.left.

Find All Overlapping Intervals Complexity O(log n) nodes encountered. All intervals in v overlap. Intervals in v with ri >= l overlap. Intervals in v with li <= r overlap. O(log n + |output|) when v.left and v.right are sorted arrays. 4 L R v l r Look at subtree of visited nodes. If there is no degree 2 node, total number of nodes in subtree is O(log n). Otherwise, mark nodes on leftmost and rightmost paths from root as boundary nodes. Number of boundary nodes is O(log n). Other nodes are interior nodes. Let P be degree 2 node closest to root. All interior nodes are descendents of P. The interval stored in an interior node overlaps the query interval as the query interval includes P.pt and every interior node is also the descendent of another degree 2 node in the visited subtree.

Version 2 Store intervals of the form [li,ri], li <= ri. Empty nodes permitted. Inserts and deletes. Answer queries of the form: which intervals include the point d. Note, when l = r, interval intersection becomes point enclosure.

Inserts & Deletes Difficult in version 1 because v.pt is median. Select v.pt (almost) arbitrarily and use a red-black tree. Each node stores between 0 and n intervals. At most 2n nodes permissible. Tree height is O(log n). Not completely arbitrary as the intervals stored in the node must contain the point.

Need For Empty Nodes Deletion from a degree 2 node. 20 10 6 2 8 15 40 30 25 35 7 18 Suppose that deletion of an interval from root causes it to become empty. Delete 20  replace with 18  intervals stored in 10 and 15 (I.e., in all nodes on path from degree 2 node that has become empty to replacement node) may need to be moved to new location (root) of 18. This relocation may cause 10 and 15 to become empty, so we repeat the process! Hence, update is expensive. Note that deletion from a degree 0 or 1 node doesn’t suffer from this problem.

Why Upto 2n Nodes Permissible When number of nodes > 2n, at least 1 degree 0 or degree 1 node must be empty. Empty degree 0 and 1 nodes are easily removed. So, no need to keep them around. 2n suffices to avoid having to handle empty degree 2 nodes. Proof, by contradiction. |tree| > 2n >= n+1 empty nodes (ne). Assume all are degree 2 nodes. nn = nonempty nodes, n2 = degree 2 nodes So, n2 >= ne and n >= nn (each nn node has at least 1 interval). So, n2 + n >= ne + nn = |tree|. So, n2 >= |tree| - n. But, n0 = n2 + 1 So, |tree| = n0+n1+n2 = n2 + 1 + n1 + n2 > 2n2 >= 2|tree| - 2n > |tree|. When a delete is done and a node becomes empty, it may be necessary to remove up to 2 degree 0/1 nodes to ensure #nodes <= 2*#intervals.

LL Rotation Intervals change only for A and B. B’L BR AR After insertion. B A After rotation. BR AR B’L Intervals change only for A and B. Those intervals of A that include B.pt need to be moved into B.

Remaining Rotations All insert/delete rotations require relocating intervals from O(1) nodes. O(1) rotations per insert/delete. Complexity of insert/delete is O(f(n) + log n), where f(n) is time needed to relocate O(n) intervals from one node to another. F(n) = log n when the lists are themselves stored as red-black trees and the intervals are either disjoint or nest; n when arrays are used

All intervals that contain d d = v.pt All intervals in v. Done! 4 L R v

All intervals that contain d d < v.pt Intervals in v with large enough left end point. No interval in R overlaps. Search L for additional overlapping intervals. d > v.pt Similar O(log n + |output|) 4 L R v

Version 3 Store intervals of the form [li,ri], li <= ri. Exactly 1 interval per node. Inserts and deletes. Report just 1 overlapping interval. Note, when l = r, interval intersection becomes point enclosure.

Version 3—Structure Red-black tree. Each node has exactly one interval v.int and one point v.max. v.max = max (right) end point of intervals in subtree rooted at v. Binary search tree on intervals. So, need an ordering relation for intervals. Subtree rooted at v includes node v.

Interval Ordering Ordered by left end points. Tie breaker for equal left end points. i and j are two intervals. i < j iff li < lj or (li = lj and ri > rj) i j i j i j Each node has an interval and a max right end-point. Binary search tree on left end points of intervals. Insert, delete, search (for an overlapping interval) O(log n) time.

Example 1 e 3 a 2 4 c 6 b f 5 7 d f,7 e,4 a,3 c,4 d,7 b,6

Version 3—Search Search for an interval that has an overlap with Q = [l,r] If v.interval and Q overlap, done. Otherwise, if v.leftChild.max >= l search v.leftChild. Otherwise search v.rightChild. f,7 e,4 a,3 c,4 d,7 b,6 Prove correct by showing (a) if you go into left subtree, then either there is an overlapping interval in left or right has no overlapping interval and (b) if you go into the right subtree then there is no overlapping interval in the left subtree. (b) is easy as leftChild.max < l  no overlap in left subtree. For (a), suppose there is no overlapping interval in the left subtree. So, the interval L in the left sub tree that ends at leftChild.max begins after r. All intervals in the right subtree begin at or after the left end point of L and so do not overlap Q. Search time is O(log n).

Version 3—Search v.leftChild.max >= l l r max Suppose no interval in left subtree overlaps [l,r]. All intervals in right subtree begin at or after left end point of blue interval, which is an interval in the left subtree that ends at max. max

Version 3—LL Rotation Max values changes only for A and B. A B B’L BR AR After insertion. B A After rotation. BR AR B’L Note new max for B may not equal old max for A as an interval has been inserted/deleted. Max values changes only for A and B. A.max = max{A.interval.right, BR.max, AR.max}. B.max = max{B.interval.right, B’L.max, A.max}.

Remaining Rotations All insert/delete rotations require computing max for O(1) nodes. O(1) rotations per insert/delete. Complexity of insert/delete is O(log n).