【发布时间】:2020-06-09 05:29:37
【问题描述】:
我正在尝试理解 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)
为什么他为树而不是节点创建实例? 谁能帮我解释一下这些概念,谢谢!
【问题讨论】:
-
严格来说,通常你可以在没有额外的 Tree 类的情况下相处。然而,在语义上,树和节点是两个不同的概念。此外,仅使用节点类,您将无法表示一棵空树(至少是一棵可以调用方法的有意义的树)。
标签: python algorithm data-structures binary-search-tree