Функция вставки в дерево, не распознающая узел типа None - PullRequest
0 голосов
/ 27 декабря 2018

Попытка написать двоичное дерево поиска в Python с различными функциями.Одной из функций является простой узел «вставки».

class Node(object):
    def __init__(self, val=None):
        self.val = val
        self.left = None
        self.right = None
    def insert(self, root, val):
        if root is None:
            return Node(val)
        if val < root.val:
            root.left = self.insert(root.left, val)
        elif root.val < val:
            root.right = self.insert(root.right, val)
        return root

Кажется довольно простым, но когда я создаю объект Node:

root= Node()

и попытался вставить его с помощью:

root = root.insert(root,30)

Я получаю сообщение о том, что «<» не поддерживается между экземплярами «int» и «NoneType» </p>

Я уже пытаюсь позаботиться об этом в функции вставки, установив if root is None: Как я могу это исправить?

1 Ответ

0 голосов
/ 27 декабря 2018

Попробуйте:

if root is None or root.val is None:

... поскольку root.val может быть None

Вы также можете сделать if None in (root, root.val):

...