Python 向二叉树插入值,但不生成任何值
这些是我目前为二叉树定义的函数。 我希望使用以下函数向T1的右分支插入一个值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
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