Как объявить узлы Red Black Tree в Python? - PullRequest
0 голосов
/ 08 апреля 2019

Моя цель - создать работающее красно-черное дерево. Я понимаю теоретическую концепцию, но мне не хватает понимания, как зависать с классами в Python. Я думал о:

Реализация чего-то такого, как:

RED = 'R'
BLACK = 'B'

class Node:
    def __init__(self):
        self._color = BLACK
        self._key = self._left = self._right = self._p = None

class Tree:
    nil = Node()
    nil.color = BLACK

    def __init__(self, root=nil):
        self.root = root

    def rb_insert(self, z):
        y = self.nil
        ...
        z.p = y  # ISSUE... How should I fix it?

Но, как и ожидалось, z не имеет атрибута p (поскольку это целое число). Поэтому я думал изменить конструктор узла, чтобы получить ключ, но в этом случае я не знаю, как обращаться с 'nil'Node (который появляется на каждом листе).

...