Встречается на собеседованиях • сегодня

Что такое красно-черное дерево

Красно-черное дерево — это самобалансирующееся бинарное дерево поиска, где каждый узел имеет цвет (красный или черный). Оно гарантирует логарифмическую сложность операций (вставка, удаление, поиск) за счет соблюдения правил:

  1. Каждый узел либо красный, либо черный.
  2. Корень всегда черный.
  3. Листья (NIL) считаются черными.
  4. У красного узла оба потомка черные.
  5. Все пути от узла до листьев содержат одинаковое число черных узлов.

Пример вставки в Java (упрощенно):

java
class Node {
    int data;
    Node left, right, parent;
    boolean color; // true - красный, false - черный
}

void insertFixup(Node z) {
    while (z.parent.color == RED) {
        if (z.parent == z.parent.parent.left) {
            Node y = z.parent.parent.right;
            if (y.color == RED) {
                z.parent.color = BLACK;
                y.color = BLACK;
                z.parent.parent.color = RED;
                z = z.parent.parent;
            } else {
                if (z == z.parent.right) {
                    z = z.parent;
                    leftRotate(z);
                }
                z.parent.color = BLACK;
                z.parent.parent.color = RED;
                rightRotate(z.parent.parent);
            }
        }
        // аналогично для правого случая
    }
    root.color = BLACK;
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы