python - 二叉搜索树的插入算法不起作用

标签 python python-3.x insert binary-search-tree

我正在尝试编写一个将节点插入二叉搜索树的函数。我看过几个例子,在我看来我的算法应该可以工作,但由于某种原因它没有通过测试。

def insert(tr, el):
    """ function to insert an element into a binary search tree
    following the rules of binary search trees.
    
    return: an updated tree
    precondition: assumed all elements unique
    """

    if tr == None: 
        return createEyecuBST(el, None)
    elif el < tr.value:
        if tr.left == None:
            tr.left = createEyecuBST(el, tr)
            return tr
        else: return insert(tr.left, el)
    elif el > tr.value:
        if tr.right == None:
            tr.right = createEyecuBST(el, tr)
            return tr
        else: return insert(tr.right, el)
    return None

最佳答案

您的代码中有两行出现问题:

else: return insert(tr.left, el)

else: return insert(tr.right, el)

在这些情况下,您的函数将返回 tr 的子树(左侧或右侧),而您希望您的函数返回更新后的 tr 树。我认为您应该将这些行替换为:

else:
    insert(tr.left, el)
    return tr

tr.right 也是如此。

关于python - 二叉搜索树的插入算法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26948972/

相关文章:

python - 如何使用线程检索子数组

python - 如何在Python中显示EOF?/如何识别行?

python - 替换数据帧列中多个字符串的函数 - "TypeError: expected string or bytes-like object"

python - 如何对N个列表的元素求和?

python - 列表中的词典

php - mysql_insert_id() 0,但插入成功

insert - 寻找 MySQL 查询命令将本地 .sql 文件中的所有查询插入到远程服务器上的 MySQL 数据库

algorithm - 插入红黑树

python - 查找、连接和删除 python 列表中的项目

python - 在 Python 的单词列表中查找三个单词