【发布时间】:2019-01-13 15:28:12
【问题描述】:
我是 Python 和数据结构的新手。在学习二叉树时,我发现所有可用的实现在节点类中都有树的方法。
但我想以不同的方式实现它,除了 Node 类之外,还会有一个二叉树类,其中包含二叉树的方法。
这是我想出的代码,但它引发了我传递给函数 insertleft() 和 insertright() 的参数的错误。
class Node():
def __init__(self, arg):
self.left = None
self.right = None
self.data = arg
class Bt():
def __init__(self, root):
self.root = root
def insertleft(temp.left, data):
if (temp.left == None):
temp.left.data = data
elif(data<temp.left.data):
t1 = temp.left
insertleft(t1.left, data)
elif(data>temp.left.data):
t1 = temp.left
insertright(t1.left, data)
def insertright(temp.right, data):
if (temp.right == None):
temp.right.data = data
elif(data<temp.right.data):
t1 = temp.right
insertleft(t1.right, data)
elif(data>temp.right.data):
t1 = temp.right
insertright(t1.right, data)
def insert(self, data):
temp = self.root
if(temp.data = None):
temp.data = data
elif(data<temp.data):
insertleft(temp.left, data)
elif(data>temp.data):
insertright(temp.right, data)
r = Bt()
r.root = Node(5)
r.insert(4)
r.insert(6)
这是我收到的错误:
def insertleft(temp.left, data): ^ SyntaxError: invalid syntax
我不确定正确的语法应该是什么。提前感谢您的帮助
【问题讨论】:
-
你在一个类中定义一个函数。第一个参数应该是一个变量,表示实例化的类对象 it
self。以下参数是对传入参数的引用。所以temp.left在你的情况下应该只是temp或node。你的逻辑还有其他问题...... -
另外,发现 this SO question 似乎你正在努力完成。
标签: python-3.x oop data-structures binary-tree binary-search-tree