首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将树的根节点设置为None

将树的根节点设置为None
EN

Stack Overflow用户
提问于 2016-03-16 03:42:54
回答 1查看 341关注 0票数 2

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

我尝试设置self = None,如下面的代码所示,但由于某些原因不起作用,删除(del self)也不起作用。删除叶子很容易,因为您只需要设置previous.right = None或previous.left = None,就这样了。但显然没有对根的引用来帮助处理这种情况。

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

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2016-03-16 04:59:38

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

相反,您可能希望在用户代码和根节点之间添加额外的间接层。这通常是某种类型的Tree类,除了(可能是None)根节点引用之外,它还可以跟踪其他有用的内容,比如树中有多少值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36020662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档