Python 向二叉树插入值,但不生成任何值

Python 向二叉树插入值,但不生成任何值,python,Python,这些是我目前为二叉树定义的函数。 我希望使用以下函数向T1的右分支插入一个值 def build_tree(entry, left, right): return [entry, left, right] def entry(tree): return tree[0] def left_branch(tree): return tree[1] def right_branch(tree): return tree[2] def make_empty_tre

这些是我目前为二叉树定义的函数。 我希望使用以下函数向T1的右分支插入一个值

def build_tree(entry, left, right):
    return [entry, left, right]

def entry(tree):
    return tree[0]

def left_branch(tree):
    return tree[1]

def right_branch(tree):
    return tree[2]

def make_empty_tree():
    return []

t1 = build_tree(2,build_tree(1,make_empty_tree(),make_empty_tree()),build_tree(3,make_empty_tree(),make_empty_tree()))
然而,这给了我[5],而不是预期的结果 [2,[[1],[],[],[[3],[5].

如果您使用以下命令调用插入树:

那么t1将变成:

insert_tree(5, t1)
但这不是一个格式良好的树,因为5的树也应该有两个空的子节点。您应该通过使用另外两个空列表扩展列表来初始化树:

[2, [1, [], []], [3, [], [5]]]

我猜你叫t1=insert_treet1,5? 问题是,insert_tree仅在参数tree=[]的特殊情况下返回。请在末尾返回树

[2, [1, [], []], [3, [], [5, [], []]]]
顺便说一句,您的函数不构成树的有效定义,例如,left_branchmake_empty_树将失败

def insert_tree(x, tree):
    if tree == []:
        tree.extend([x, [], []])
        return tree
    if x <= entry(tree):
        return insert_tree(x , left_branch(tree))
    else:
        return insert_tree(x , right_branch(tree))
[2, [1, [], []], [3, [], [5, [], []]]]
def insert_tree(x, tree):
    if tree == []: 
        tree.append(x)
    else:
        if x <= entry(tree): 
            insert_tree(x , left_branch(tree))
        else: 
            insert_tree(x , right_branch(tree))
    return tree