gpt4 book ai didi

python-3.x - 将树的根节点设置为 None

转载 作者:行者123 更新时间:2023-12-05 04:13:56 24 4
gpt4 key购买 nike

当删除单节点树中的根(恰好是叶子本身)时,我需要将根节点更改为 None。我不想获得 self.value = self.left = self.right = None 的空节点。

我尝试设置 self = None,如下面的代码所示,但由于某种原因它不起作用,删除 (del self) 也不起作用。删除叶子很容易,因为您只需要设置 previous.right = None 或 previous.left = None 即可。但是显然没有提到根来帮助解决这个问题。

是否有可能从二进制节点更改根的类型并将其设为 None 或什至是整数或类似的类型?因为正如您在代码中看到的那样,设置 self 不起作用

class BinaryNode:
def __init__(self, value, left = None, right = None):
'''
Initiate a Binary-tree
:param value: float | int | str
:return: None
'''
self.value = value
self.left = left
self.right = right

def delete_root(self):
'''
Delete the root of the tree
:return: None
'''
if not(self.right or self.left): #Base case: the root is childless
self = None #Doesnt work!!!
else:
self.left.get_max() #get_max is a method that replaces the root with a leaf

最佳答案

你不可能那样做。对根节点的引用保存在其他地方(例如各种用户函数中的局部变量),类本身不能更改这些引用。

您可能想要做的是在用户代码和根节点之间添加一个额外的间接层。通常这是某种 Tree 类,除了(可能是 None)根节点引用之外,它还可以跟踪其他有用的东西,比如有多少值在树中。

关于python-3.x - 将树的根节点设置为 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36020662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com