我有一个方法可以在树中创建一个新节点-左或右。如果值低于当前值,则将其插入左侧,否则将插入右侧。在
我想重构这段代码,这样我就可以先在哪一边插入元素,然后再插入它。在此之前,我执行了两次:一次用于左侧,一次用于右侧。在
目前的情况如下:
def neu(self, sortByValue, secondValue):
child = self.left if(sortByValue.lower() < self.value[0].lower()) else self.right
if(child == None):
child = MyTree(sortByValue,secondValue)
else: child.neu(sortByValue,secondValue)
但我的问题是自左没有,而且自我权利没有。所以当我创建child作为变量并将其设置为MyTree(…),自左以及自我权利没有收到值。在
有什么我能改进的吗?谢谢!在
你为什么要用树?在
我会用字典:
初始化:
添加新节点:
提取东西
不是直截了当的回答,而是一种更像Python的方式
哈罗;—)
self.left
或self.right
没有收到该值,因为您分配给child
,后者只保存目标值的副本,而没有对它的引用。在你想要一个指针-这在Python中并不直接存在。在
您可以使用类包装器来表达这一点,但我认为当您在if子句中同时编写这两种可能性时,它更容易理解。在
在Python中,变量是名称而不是位置。例如:
在您的代码中,您只需将名称
child
重新绑定到另一个值(新节点),而这对先前绑定的值(None)没有影响。在下面是一个代码的重新编写,它应该能满足您的需要(未经测试):
^{pr2}$相关问题 更多 >
编程相关推荐