具有OOP的二叉搜索树python

问题描述 投票:0回答:1

我试图了解python和OOP以及数据结构我现在正在研究二叉搜索树的实现这是节点结构的类

class Node():
    def __init__(self, data):
        self.data = data
        self.leftChild = None
        self.rightChild = None

该代码的开发人员已在Node类和另一个名为tree的类中创建了插入功能。这是节点类中的样子:

def insert(self, data):
    if self.data == data:
        return False        

    elif data < self.data:
        if self.leftChild:
            return self.leftChild.insert(data)
        else:
            self.leftChild = Node(data)
            return True

    else:
        if self.rightChild:
            return self.rightChild.insert(data)
        else:
            self.rightChild = Node(data)
            return True

但是,他在树类中创建了一个具有相同名称的函数,看起来像这样

class Tree():
    def __init__(self):
        self.root = None

    def insert(self, data):
        if self.root:
            return self.root.insert(data)
        else:
            self.root = Node(data)
            return True

我现在有一些问题,为什么会有两个同名函数?当我尝试在此代码上执行其中一个而没有另一个时,则显示错误

if __name__ == '__main__':
    tree = Tree()
    tree.insert(10)

为什么他为树而不是节点创建实例?有人可以帮我解释一下这些概念吗,谢谢!

python algorithm data-structures binary-search-tree
1个回答
0
投票
创建tree对象时,它不会创建任何节点。它只是用root定义了None变量。调用tree.insert(data)方法时正在创建节点。
© www.soinside.com 2019 - 2024. All rights reserved.