下面是我的python代码。
将u.level
设置为v.level + 1
后,不仅u.level
,还v.level
,还会增加1.此外,当我执行u.level -= 1
时,{ {1}}减少1.为什么会出现这种情况?这种情况也发生在Java中。我该怎么做才能解决这个问题?
v.level
答案 0 :(得分:0)
对于大多数代码,您实际上并没有两个节点。相反,名称u
和v
都绑定到同一个Node
实例,该实例最初为u
。当您从队列中弹出对v
节点的引用时,名称被反弹后,原始u
节点被垃圾收集:
Q.put(u) # add a reference to u to the queue
v = Q.get() # immediately take it off again, rebinding v to be the same as u
老实说,我不知道你对这些行的期望是什么。它们的效果与v = u
相同,我认为这不是你想要的。