Сравнение узла BST с проблемой str - PullRequest
0 голосов
/ 16 ноября 2018

Это функция поиска, которую я использую, чтобы попытаться найти конкретное значение в BST, которое содержит слова.Однако, когда я запускаю его, мне выдается ошибка в строке elif root < root.value:

def search(root, target):
    print("Target is: " + target + "\n")
    if root.value == target or root == None:
        print("Found target: " + target)
        return root
    elif root < root.value:
        return search(root.left, target)
        print("Searching left")
    else:
        return search(root.right, target)
        print("Searching right")

Это говорит TypeError: '<' not supported between instances of 'Node' and 'str', теперь, насколько я знаю, я могу использовать < и >, сравнивать обычныестроки, но я не могу использовать его для сравнения корневого узла, содержащего строку, и другого узла, содержащего строку?Это их другой способ сравнения?

1 Ответ

0 голосов
/ 17 ноября 2018

Вы пытаетесь сравнить root с root.value.

Я думаю, вы имели в виду что-то вроде этого:

def search(root, target):
    print("Target is: " + target + "\n")
    if root.value == target or root is None: # changed to is, 
                                             # though you may want a 4th case for this
        print("Found target: " + target)
        return root
    elif target < root.value: #Notice I changed this to target instead of root
        print("Searching left")
        return search(root.left, target)
    else:
        print("Searching right")
        return search(root.right, target)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...