我知道关于这个主题已经存在多个问题,但没有一个问题可以解决我的问题。
我正在尝试构建一个有两个选项的搜索树:
构建树
从用户那里获取一棵树并在其中搜索(例如列表,字典......)
我的问题在于第二个选项,因为它似乎是AttributeError
。
当我运行没有给定树的代码时,它运行正常,但当我尝试使用列表时会出现错误消息:
self.root.add(i)
AttributeError: 'NoneType' object has no attribute 'add'
我的代码:
import unittest
class Testfunction(unittest.TestCase):
def test(self):
init = SearchTree(['x', 'b', 'eee'])
init.add('left')
init.add('right')
init.tolist()
self.assertEqual(init.__contains__('left'),True )
self.assertEqual(init.add('xx'), None )
class Node:
def __init__(self, val):
self.value = val
self.left = None
self.right = None
def insert(self, item):
if self.value == item:
return False
elif self.value > item:
if self.left:
return self.left.insert(item)
else:
self.right = Node(item)
return True
def find(self, item):
if self.value == item:
return True
elif self.value > item:
if self.left:
return self.left.find(item)
else:
return False
else:
if self.right:
return self.right.find(item)
else:
return False
def tolist(self):
if self:
if self.left:
self.left.tolist()
if self.right:
self.right.tolist()
class SearchTree:
def __init__(self, items=None):
# if items . then should be inserted
self.items = items
self.root = None
if items:
for i in self.items:
self.root.add(i)
def __contains__(self, item):
if self.root:
return self.root.find(item)
else:
return False
def add(self, item):
if self.root:
return self.root.insert(item)
else:
self.root = Node(item)
def tolist(self):
self.root.tolist()
test = Testfunction()
test.test()
答案 0 :(得分:0)
检查项目时,请修改该行以使用您构建的添加。
if items:
for i in self.items:
# Instead of self.root.add(i)
self.add(i)