добавление элемента в двоичное дерево поиска - PullRequest
0 голосов
/ 04 декабря 2018

Привет, мой вопрос, как я могу исправить код для моей функции добавления для моей программы бинарного дерева поиска.

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 голосов
/ 04 декабря 2018

По сути, вы меняли параметры функции add, поскольку self - это дерево здесь, а d - элемент данных, который нужно добавить.Кроме того, чтобы создать такие BTNode2 s только с одним параметром, вы должны добавить значение по умолчанию для l и r.Наконец, в зависимости от того, что делает mult, вы можете изменить это в алгоритме добавления, но не совсем понятно, что он представляет.

Так что мы можем исправить это на:

class BTNode2:
    def __init__(self, d, l<b>=None</b>, r<b>=None</b>):
        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:
                <b>self.left.add(d)</b>
            else:
                self.left = BTNode2(d)
        else:
            if self.right is not None:
                <b>self.right.add(d)</b>
            else:
                self.right = BTNode2(d)
...