比较 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 以获取有关如何解决此问题的一些提示。
谁能解释一下双端队列中树节点的比较是如何工作的。例如,我在两个不同的双端队列中压入两个相同的二叉树的两个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 以获取有关如何解决此问题的一些提示。