HiveBrain v1.2.0
Get Started
← Back to all entries
patternMinor

Imagine a red-black tree. Is there always a sequence of insertions and deletions that creates it?

Submitted by: @import:stackexchange-cs··
0
Viewed 0 times
createsredalwaysdeletionssequenceimaginethatandthereinsertions

Problem

Let's assume the following definition of a red-black tree:

  • It is a binary search tree.



  • Each node is colored either red or black. The root is black.



  • Two nodes connected by an edge cannot be red at the same time.



  • Here should be a good definition of a NIL leaf, like on wiki. The NIL leaf is colored black.



  • A path from the root to any NIL leaf contains the same number of black nodes.



Question

Suppose that you have implemented the insert and delete operations for the red-black tree. Now, if you are given a valid red-black tree, is there always a sequence of insert and delete operations that constructs it?

Motivation

This question is motivated by this question and by the discussion from this question.

Personally, I do believe that if you imagine a valid red-black tree consisting only of black nodes (which implies that you are imagining a perfectly balanced tree), there is a sequence of insert and delete operations that constructs it. However,

  • I do not know how to accurately prove that



  • I am also interested in the more general case

Solution

The insert and delete operations in a red-black tree include the balancing needed to maintain the red-black properties.

The problem with non(left- or right-) leaning red black trees is that there are multiple ways to restore the red-blackness after the basic delete or insert.

It is not the insert or the delete that transforms the tree, but the rebalancing and rotation that happens afterwards to preserve/restore the red blackness of the tree.

The basic description of the red-black tree does not prescribe which of the possible routes to take.

It may not be possible to figure out how to exactly reconstruct a given red black tree, because the rebalancing need not be deterministic.

This has been 'solved' with left-leaning red black trees.

There is only one way the balancing is done. So any given leaning red black tree can be reconstructed using inserts and deletes, because the rebalancing/rotations are done in a specific deterministic way.

This does not mean that left-leaning RB-trees are better or more efficient, what they gain on one hand by using deterministic balancing rules, they lose on the other by more complex balancing code.

As per @Anton's comment:

There is an algorithm which uses the operation insert and delete to construct a valid red-black tree consisting only of black nodes. It uses $(h+2)⋅2^{h}−1$ insertions/deletions to create a tree of height $h$. First, we can create a perfectly balanced red-black tree in breadth-first manner using $2^{h+1}−1$ insertions, then using $h∗2^{h-1}$ insertions and the same amount of deletions repaint it into a completely black tree. The trick here is to move up $h$ times the lowest red layer up the tree until it reaches the root.

I think a complete balancing algorithm like Day-Stout-Warren would be more efficient though.

Context

StackExchange Computer Science Q#48874, answer score: 3

Revisions (0)

No revisions yet.