Я пытаюсь реализовать красно-черное дерево с методом Insert() для нового узла, и может ли этот узел стать корневым узлом, левым узлом корневого узла или правым узлом корневого узла. Я продолжаю сталкиваться с ошибкой, когда пытаюсь запустить код на базе моего тестового кода.
AttributeError: объект 'int' не имеет атрибута 'right' для current.right в цикле while метода вставки.
#!/usr/bin/env python3
class RBNode:
def __init__(self, val):
self.red = False
self.parent = None
self.val = val
self.left = None
self.right = None
class RBTree:
def __init__(self):
self.nil = RBNode(None)
self.nil.red = False
self.nil.left = None
self.nil.right = None
self.root = self.nil
def insert(self, val):
new_node = RBNode(val)
new_node.left = self.nil
new_node.right = self.nil
new_node.red = True
parent = None
current = self.root
while current != self.nil:
parent = current
if new_node.val < current:
current = current.left
if new_node.val > current:
current = current.right
else:
return
new_node.parent = parent
if parent == None:
self.root = new_node.val
else:
if new_node.val < parent.val:
parent.left = new_node.val
elif new_node.val > parent.val:
parent.right = new_node
Подробнее здесь: https://stackoverflow.com/questions/786 ... black-tree