Ответ 1
Все объекты в Python реализованы с помощью ссылок, поэтому в исходном коде нет различия между объектами и указателями на объекты.
Python-эквивалент NULL
называется None
(хорошая информация здесь). Поскольку все объекты в Python реализованы с помощью ссылок, вы можете переписать свою структуру, чтобы она выглядела следующим образом:
class Node:
def __init__(self): #object initializer to set attributes (fields)
self.val = 0
self.right = None
self.left = None
А потом все работает так, как и следовало ожидать:
node = Node()
node.val = some_val #always use . as everything is a reference and -> is not used
node.left = Node()
Обратите внимание, что в отличие от NULL
в C, None
не является "указателем в никуда": это фактически единственный экземпляр class NoneType
.
Поэтому, поскольку None
является обычным объектом, вы можете проверить его, как и любой другой объект:
if node.left == None:
print("The left node is None/Null.")
Хотя None
является одноэлементным экземпляром, считается более идиоматичным использовать is
и сравнивать по ссылочному равенству:
if node.left is None:
print("The left node is None/Null.")