2024-04-29 17:02:55 发布
网友
我对python有问题。。我有一个二叉树节点类型:
class NODE: element = 0 leftchild = None rightchild = None
我必须实现一个函数deletemin:
然而,当我试图在二叉树上测试这个问题时:
1 / \ 0 2
它应该删除0,只需将其设置为null,但我得到的结果是:
0 / \ 0 2
为什么我不能在python中使一个函数中的节点无效?他们是这样做的吗?在
class Node: element = 0; left_child = None right_child = None def delete_min( A ): if A.left_child is None: return A.right_child else: A.left_child = delete_min(A.left_child) return A tree = delete_min(tree)
Python通过对象引用传递参数,就像java一样,而不是通过变量引用。当你把一个局部变量(包括一个参数)赋给一个新值时,你只改变了局部变量,而没有改变其他的(不要把它与调用赋值函数或赋值给对象的属性相混淆:我们说的是对裸名的赋值)。在
Python中的首选解决方案通常是返回多个值(根据需要而定),并在调用者中适当地分配它们。因此deletemin将返回两个值,current returnval和modified node,调用者将根据需要分配后者。一、 电子邮箱:
def DELETEMIN( A ): if A.leftchild is None: return A.element, A.rightchild else: return DELETEMIN( A.leftchild )
在调用者中,您以前有foo = DELETEMIN( bar ),您可以使用
foo = DELETEMIN( bar )
括号内有特殊的大写和空格,顺便说一句,但这是另一个问题;-)。在
Python通过对象引用传递参数,就像java一样,而不是通过变量引用。当你把一个局部变量(包括一个参数)赋给一个新值时,你只改变了局部变量,而没有改变其他的(不要把它与调用赋值函数或赋值给对象的属性相混淆:我们说的是对裸名的赋值)。在
Python中的首选解决方案通常是返回多个值(根据需要而定),并在调用者中适当地分配它们。因此deletemin将返回两个值,current returnval和modified node,调用者将根据需要分配后者。一、 电子邮箱:
在调用者中,您以前有
^{2}$foo = DELETEMIN( bar )
,您可以使用括号内有特殊的大写和空格,顺便说一句,但这是另一个问题;-)。在
<> P>没有办法获得“指针或引用到一个调用方的BARNAMEY”(以Python或java),方式是C++或C++。还有其他替代方法,但是它们需要不同的安排,而不是您所喜欢的,所以我建议使用这里所示的多个返回值方法。在相关问题 更多 >
编程相关推荐