向二进制搜索树添加元素

时间:2018-12-03 22:17:45

标签: python algorithm search tree binary

您好,我的问题是如何为二进制搜索树程序修复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'

1 个答案:

答案 0 :(得分:1)

实质上,您交换了add函数的参数,因为self是此处的树,而d是要添加的数据元素。此外,为了仅使用一个参数来构造这样的BTNode2,您应该为lr添加默认值。最后,根据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)