我试图了解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
对象时,它不会创建任何节点。它只是用root
定义了None
变量。调用tree.insert(data)
方法时正在创建节点。