代码如下:
#-*-conding:utf-8 -*-
#file:Sort.py
#
class Btree:
def __init__(self,value):
self.left=None
self.data=value
self.rigth=None
def insertLeft(self,value):
self.left=Btree(value)
return self.left
def insertRight(self,value):
self.right=Btree(value)
return self.right
def show(self):
print(self.data)
def inorder(node):
if node.data:
if node.left:
inorder(node.left)
node.show()
if node.right:
inorder(node.right)
def rinorder(node):
if node.data:
if node.right:
rinorder(node.right)
if node.left:
rinorder(node.left)
def inserts(node, value):
if value > node.data:
if node.right:
inserts(node.right,value)
else:
node.insertRight(value)
else:
if ndoe.left:
inserts(node.left,value)
else:
node.insertLeft(value)
if __name__=='__main__':
l=[2,7,3,88,23,11]
Root=Btree(l[0])
node=Root
for i in range(1,len(l)):
inserts(Root,l[i])
print('****************************************')
print(' xiao dao da')
print('****************************************')
inorder(Root)
print('****************************************')
print(' da dao xiao')
print('****************************************')
rinorder(Root)
报错:NameError: name 'inserts' is not defined
求解。。。。。。。
你要是想把insert 定义在类外,就要改缩进,要是在类中,就要 用类对象来访问
inserts
是Btree的方法,不能够直接调用,要通过Btree的实例去调用,比如你这里的Root
Root.inserts(Root,l[i])
inorder/rinorder/inserts这三个函数没有self入参,明显不是BTree这个class里的,将这三个函数的缩进改到与BTree同级就可以了。