• No results found

Balanced Binary Search Trees

N/A
N/A
Protected

Academic year: 2021

Share "Balanced Binary Search Trees"

Copied!
13
0
0

Loading.... (view fulltext now)

Full text

(1)

1

Balanced Binary Search Trees

Balanced Search Trees

• Balanced search tree: A search-tree data structure for which a height of O(lg n) is guaranteed when implementing a dynamic set of n items.

• Examples:

• AVL trees

• 2-3 trees

• B-trees

• Red-black trees

• Treaps

and Randomized Binary Search Trees

(2)

Red-black trees

• A binary search tree with an extra bit of storage per node: it’s color

• Color can be red or black

• Tree is approximately balanced such that no path is more than twice as long as any other

• Properties:

• Every node is red or black

• The root is black

• Leaves are nil nodes that are black

• If a node is red then both its children are black

• For each node, all simple paths from the node to descendant leaves contain the same number of black nodes

Example of a red-black tree

• Every node is red or black

• The root is black

• Leaves are nil nodes that are black

• If a node is red then both its children are black

• For each node, all simple paths from the node to descendant leaves contain the same number of black

(3)

3

Height of a red-black tree

• Theorem

• A red-black tree with n internal nodes (non-nil, nodes with keys) has height

h <= 2lg(n+1)

• Intuitive argument: Merge red nodes into their black parents

Height of a red-black tree

• Resulting tree is a 2-3-4 tree where each node has 2, 3, or 4 children

• The 2-3-4 tree has uniform depth h’ of leaves

(4)

Height of a red-black tree

• Since at most half of the leaves on any path are red we must have

• h’ >= h/2

• Note that the number of leaves in each tree is n+1

• n+1 >= 2

h’

(from the black height of each node)

• lg(n+1) >= h’ >= h/2

• h < 2lg(n+1)

Corollary

• All the query operations take O(lg n) time on a red-black tree with n nodes

• Search

• Min

• Max

• Successor

• Predecessor

• We can also insert and delete in O(lg n) time but it requires some trickier operations to maintain the red-black tree properties

• Must change colors and perform rotations

(5)

5

Rotations

• A rotation takes O(1) time while maintaining the ordering of the keys and the BST property

Insertion Idea

• Insert new node as normal to a BST. Color it red and then recolor/rotate up the tree if there are any violations.

• Example: Insert x=15

(6)

Insertion Example

• Recolor 11 to black, 10 to red, the right-rotate 10 with 18

Insertion Example

• Recolor, left-rotate 10 with 7 and recolor

(7)

7

Final Tree

Analysis

• Code is a bit messy with special cases – see online for details

• Can perform O(1) rotations moving up the tree for O(lg n) insertions

• Overall O(lg n) runtime

• Deletion also O(lg n) time

• Similar special cases to consider

(8)

Randomized Data Structures

• If we have random input data then we get expected good performance on binary search trees

• BUT on particular inputs we can get bad behavior

• Idea:

• When you can’t randomize the input, randomize the data structure

• Gives expected random behavior, which is O(lg n) for BST, on any input!

Enter... the TREAP

• Tree + Heap, hence TREAP

• Both a BST and Heap are merged together. No array like we did previously with the heap, instead it is part of the node of the BST

• Invented in 1989 by Aragon and Seidel

• Why?

• High probability of O(lg n) performance for any input

• Code is much simpler than red-black trees

• Perhaps the simplest of all balanced BST’s

• Can implement without recursion for extra speed

(9)

9

Treap

• Treaps maintain a key value and a priority value for each node

• binary search tree property maintained for the keys

• heap property maintained for the priority value

• The heap values are randomly assigned

Key: 10 Priority: 0.97

Key: 5 Priority: 0.31

Key: 2 Priority: 0.24

Key: 8 Priority: 0.15

Key: 15 Priority: 0.85

Key: 12 Priority: 0.12

Key: 85 Priority: 0.76

Key: 97 Priority: 0.11

Treap Insert

• Choose a random priority (in our example between 0-1)

• Insert like normal into the BST

• Rotate up until heap order is restored

• Note that rotations preserve the heap property AND the BST property!

• Example, insert key=20, priority=0.5

Key: 5 Priority: 0.31

Key: 2 Priority: 0.24

Key: 8 Priority: 0.15 Key: 4

Priority: 0.13

Key: 5 Priority: 0.31

Key: 2 Priority: 0.24

Key: 8 Priority: 0.15

Key: 4 Priority: 0.13

Key: 20 Priority: 0.5

(10)

Insert Example

• Rotate

Key: 5 Priority: 0.31

Key: 2 Priority: 0.24

Key: 8 Priority: 0.15 Key: 4

Priority: 0.13

Key: 20 Priority: 0.5

Key: 20 Priority: 0.5

Key: 5 Priority: 0.31

Key: 2 Priority: 0.24

Key: 4 Priority: 0.13

Key: 8 Priority: 0.15

Shape of the tree fully specified by random priorities No bad inputs, only bad random numbers!

Delete

• To delete a node:

• Find the node X to delete via BST search

• If X is a leaf, just delete it

• If X has only one child, rotate the child up and delete X

• If X has two children, rotate with child that has the largest priority, maintaining the BST property with the key, and then recursively delete X

(11)

11

Delete Example

• Delete Key 15

Key: 10 Priority: 0.97

Key: 5 Priority: 0.31

Key: 2 Priority: 0.24

Key: 8 Priority: 0.15

Key: 15 Priority: 0.85

Key: 12 Priority: 0.10

Key: 85 Priority: 0.76

Key: 97 Priority: 0.11

Rotate with Key 85 Priority 0.76

Delete Example

Key: 10 Priority: 0.97

Key: 5 Priority: 0.31

Key: 2 Priority: 0.24

Key: 8 Priority: 0.15

Key: 15 Priority: 0.85

Key: 12 Priority: 0.10

Key: 85 Priority: 0.76

Key: 97 Priority: 0.11

Rotate with Key 12 Priority 0.10

(12)

Delete Example

Key: 10 Priority: 0.97

Key: 5 Priority: 0.31

Key: 2 Priority: 0.24

Key: 8 Priority: 0.15

Key: 12 Priority: 0.10

Key: 15 Priority: 0.85

Key: 85 Priority: 0.76

Key: 97 Priority: 0.11

No children, just delete Key 15

Delete Example

Key: 10 Priority: 0.97

Key: 5 Priority: 0.31

Key: 2 Priority: 0.24

Key: 8 Priority: 0.15

Key: 12 Priority: 0.10

Key: 85 Priority: 0.76

Key: 97 Priority: 0.11

(13)

13

Treap Applet

• https://www.ibr.cs.tu-bs.de/courses/ss98/audii/applets/BST/Treap- Example.html

• Java applet so kind of hard to run nowadays (could still run in IE after editing Java Console permissions)

Treap Summary

• Implements Binary Search Tree

• At a more abstract level, a Dictionary – fast to insert, retrieve, delete

• Insert, Delete, and Find in expected O(log n) time

• Worst case O(n) but extremely unlikely

• Memory use O(1) per node

• Relatively simple to implement, much less overhead than red-black or

AVL trees

References

Related documents

∗ Sorted Set: binary search trees, red-black trees, B-trees, sorted arrays or linked lists. – Unordered Set:

Still, two key central offices in Lower Manhattan flooded and at least some of their operations, if not all, were interrupted when flooding damaged power backup equipment

After defining the artisan and reviewing the literature on sustainability and sustainable entre- preneurship, this paper provides an overview of some of the ways in which

Rural development, 23. Persitence and productivity of selected Guinea grass ecotypes in semiarid tropical Kenya. Livestock Production in Pastoral and Agro-pastoral

insecurity, hunger and famines (UNECA, 2017). In most countries, pastoral populations are a minority and are located in the periphery zones and areas that are difficult to

Massage Therapy Technician Permit: Except as otherwise provided in Section 6-10.04, it shall be unlawful for any person to engage in, conduct or carry on the function of a

[14] The selection of suitable IS represents one of the most important decision making processes [15] connected with many risks, information risks. This means that outcome of such

The results of this study displayed di ff erences in the e ffi ciency of di ff erent lactobacilli strains and phytobiotic products regarding the ability to reduce ESBL-PE prevalence