您好,我的问题是如何为二进制搜索树程序修复add函数的代码。
class BTNode2:
def __init__(self,d,l,r):
self.data = d
self.left = l
self.right = r
self.mult = 1
这是添加方法
def add(self, d):
if (self < d.data):
if (d.left != None):
add(self, d.left)
else:
d.left = BTNode2(self)
else:
if (d.right != None):
add(self, d.right)
else:
d.right = BTNode2(self)
return
这是我尝试运行add方法时遇到的错误:
AttributeError:'str'对象没有属性'data'
答案 0 :(得分:1)
实质上,您交换了add
函数的参数,因为self
是此处的树,而d
是要添加的数据元素。此外,为了仅使用一个参数来构造这样的BTNode2
,您应该为l
和r
添加默认值。最后,根据mult
的功能,您可能需要在添加算法中进行更改,但是并不清楚它代表什么。
因此我们可以将其修复为:
class BTNode2:
def __init__(self, d, l=None, r=None):
self.data = d
self.left = l
self.right = r
self.mult = 1
def add(self, d):
if d < self.data:
if self.left is not None:
self.left.add(d)
else:
self.left = BTNode2(d)
else:
if self.right is not None:
self.right.add(d)
else:
self.right = BTNode2(d)