实际上我试图制作二进制搜索树但是在self.value中有一个非类型..所以有一个错误说<不能用int和none类型。请帮我解决这个问题。谢谢你的帮助..我真的坚持了....................... .................................................. .................................................. ..................................
class Tree:
def __init__(self,initval=None):
self.value=initval
if self.value:
self.left=Tree()
self.right=Tree()
else :
self.left=None
self.right=None
return
def isempty(self):
return (self.value==None)
def isleaf(self):
return (self.left.isempty() and self.right.isempty())
# convert a leaf node to an empty node
def makeempty(self):
self.value=None
self.left=None
self.right=None
return
def copyright(self):
self.value=self.right.value
self.left=self.right.left
self.right=self.right.right
return
def find(self,v):
if self.isempty():
return (False)
if self.value==v:
return (True)
if v<self.value:
return (self.left.find(v))
if v>self.value:
return (self.right.find(v))
def insert(self,v):
if self.isempty():
self.value==v
self.left=Tree()
self.right=Tree()
if self.value==v:
return
if v < self.value:
self.left.insert(v)
return
if v >self.value:
self.right.insert(v)
return
def maxval(self):
if self.right.isempty():
return(self.value)
else:
return (self.right.maxval())
def delete(self,v):
if self.isempty():
return
if v<self.value:
self.left.delete(v)
if v>self.value:
self.right.delete(v)
if v==self.value:
if self.isleaf():
self.makeempty()
elif self.left.isempty():
self.copyright()
else:
self.value=self.left.maxval()
self.left.delete(self.left.maxval())
return
def inorder(self):
if self.isempty():
return([])
else:
return (self.left.inorder()+[self.value]+self.right.inorder())
def __str__(self):
return(str(self.inorder()))
l=Tree(4)
for i in [1,3,2,6,8,55,44]:
l.insert(i)
print(l)
答案 0 :(得分:0)
如果在if中添加条件,以确保实际具有左或右节点,并且在实际节点中具有不同于None的值,该怎么办?像这样的东西
instanceType
我没有测试过,但我认为这应该有效。希望它有所帮助。
作为旁注,你可以研究二叉树中的迭代搜索,它比递归方法更有效