Randomized Search Trees

Randomized search trees use a random generator to neutralise the effect that the order of operations has. The trees stay random, even after every operation.

A common example is the treap

Treap

A treap is a combination of a heap and a tree, every node in this tree gets a priority and a key. These keys are sorted by the heap condition rule which says that the priority of the child should be <= priority of the parent.

The performance of a Treap is O(log(n)) but its worse than the previous trees (red-black, splay, ...) but easier to implement.

Example:

Operations

  • Search: Is identical to the BST searching

  • Insert: Make a new node with a random priority p and add it as you would in a BST. Now fix the heap property.

    • If the parent p > node p --> rotate to make the node parent

    • Repeat this until the heap condition is applied

  • Remove:

    • Remove as in a BST

      • 0 children: remove

      • 1 child: swap with child and remove

      • 2 children: swap with inorder successor (right subtree most left child) and repeat

    • Sometimes a swap can nvalidate the heap property, that's why we have to perform extra rotations sometimes

Example

Last updated

Was this helpful?