比较 python 中双端队列中的元素

Comparing of elements in deque in python

谁能解释一下双端队列中树节点的比较是如何工作的。例如,我在两个不同的双端队列中压入两个相同的二叉树的两个children,我得到了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

查看 this post 以获取有关如何解决此问题的一些提示。