Может кто-нибудь объяснить мне, как работает сравнение узлов дерева в deque. Например, я поместил двух дочерних элементов двух одинаковых бинарных деревьев в две разные деки и получил deque1 = deque([TreeNode{val: 2, left: None, right: None}, TreeNode{val: 3, left: None, right: None}]), deque2 = deque([TreeNode{val: 2, left: None, right: None}, TreeNode{val: 3, left: None, right: None}]), но когда я их сравнил, я получил False. Почему, если два дека включают одни и те же узлы, они не равны? Заранее спасибо!






Вы правы, думая, что если бы ваши объекты deque содержали одинаковые объекты, то два экземпляра deque также оценивались бы как равные. Проблема, с которой вы сталкиваетесь, заключается в том, что сложные объекты, такие как экземпляры TreeNode, по умолчанию равны, только если они являются одним и тем же объектом, не обязательно, если они имеют одинаковое содержимое. Вот упрощенный пример:
class TreeNode():
def __init__(self,val, left, right):
self.val = val
self.left = left
self.right = right
t1 = TreeNode(2, None, None)
t2 = TreeNode(2, None, None)
print(t1 == t2)
print(t1 == t1)
False
True
Взгляните на эта почта, чтобы узнать, как обойти эту проблему.