二叉树搜索法

2024-09-30 01:32:59 发布

您现在位置:Python中文网/ 问答频道 /正文

通过学习二进制搜索树并尝试自己实现它,我成功地让遍历方法正常工作。现在我想知道为什么这个搜索方法不能正常工作。你能帮我找出这个错误吗?我似乎无法找出我可能出错的地方

我还可以用delete方法获得帮助吗?我看不出错误可能在哪里,更糟糕的是,我没有收到错误消息来指示方向或输出

两种方法都没有输出

下面的代码

 def search(self, val):
    return self.__search(self.root, val) is not None


def __search(self, p, val):

    if p is None:
        return None

    if val < p.info:
        return self.__search(p.lchild, val)

    elif val > p.info:
        return self.__search(p.rchild, val)

    else:
     return p




tree = BinaryTree()
tree.insertion(59)


def delete(self, val):
    self.root = self.__delete(self.root, val)


def __delete(self, p, val):

    if p is None:
        print(f"{val} Was not found")


    elif val < p.info:
        p.lchild = self.__delete(p.lchild, val)

    elif val > p.info:
        p.rchild = self.__delete(p.rchild, val)

    
    else:

        if p.lchild is not None and p.rchild is not None:

            s = p.rchild
            while s.lchild is not None:
                s = s.lchild

            p.info = s.info
            p.rchild = self.__delete(p.rchild, s.info)


        else:

            if p.lchild is not None:
                ch = p.lchild

            else:
                ch = p.rchild

            p = ch
       
        return p


tree = BinaryTree()
tree.insertion(59)
tree.insertion(45)
tree.insertion(72)
tree.insertion(75)
tree.insertion(69)
tree.insertion(50)
tree.delete(69)
tree.level_order()

Tags: 方法selfinfononetreesearchreturnif

热门问题