Почему этот python код для вставки в двоичное дерево поиска не работает? - PullRequest
0 голосов
/ 21 апреля 2020

Почему этот код для вставки в двоичное дерево поиска не работает?

  class BinaryTreeNode:
        def __init__(self,key):
            self.key=key
            self.left=None
            self.right=None

    def insert(root,data):
        if root is None:
            root=BinaryTreeNode(data)
        else:
            if data>root.key:       
                insert(root.right,data)
            else:
                insert(root.left,data)y

1 Ответ

0 голосов
/ 01 мая 2020

Лог c кода, кажется, прекрасно, но у меня есть одна проблема. В этом коде это возвращает что-нибудь?

  class BinaryTreeNode:
    def __init__(self,key):
        self.key=key
        self.left=None
        self.right=None

def insert(root,data):
    if root is None:
        root=BinaryTreeNode(data)
    else:
        if data>root.key:       
            insert(root.right,data)
        else:
            insert(root.left,data)
    return

Я добавил возврат в ваш метод вставки, возможно, он сможет работать сейчас. Из-за пропущенного возврата ваш метод будет продолжайте вызывать себя, но если он не вернется, стек не закроется, в результате чего ваша программа застрянет навсегда.

У меня также есть метод вставки, возможно, вы могли бы просмотреть и проверить, пропустили ли вы где-то.

def insert(self, val):
    treeNode = Node(val)
    placed = 0
    tmp = self.root
    if not self.root:
        self.root = treeNode
    else:
        while(not placed):
            if val<tmp.info:
                if not tmp.left:
                    tmp.left = treeNode
                    placed = 1
                else:
                    tmp = tmp.left
            else:
                if not tmp.right:
                    tmp.right = treeNode
                    placed = 1
                else:
                    tmp = tmp.right
    return 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...