Python - 使用递归实现二叉树
Python - implementing binary tree using recursion
def build_bst(l):
if len(l) == 1:
return l
mid = len(l) // 2
return bst = {'data': l[mid]}, bst["left_child"] == {'data': build_bst(l[:mid])}, bst["right_child"] == {'data': build_bst(l[(mid+1):])}
sorted_list = [12, 13, 14, 15, 16]
binary_search_tree = build_bst(sorted_list)
print(binary_search_tree)
Error:
File "recursion.py", line 6
return bst = {'data': l[mid]}, bst["left_child"] == {'data': build_bst(l[:mid])}, bst["right_child"] ==
{'data': build_bst(l[(mid+1):])}
^
SyntaxError: invalid syntax
谁能解释一下我的代码有什么问题,我似乎找不到错误。
主要问题是:
- 您不能在 return 语句中使用
=
-- 这就是错误消息的内容;您应该首先在单独的语句中执行赋值,然后执行 return
。或者,使用一个没有任何变量赋值的字典文字。
- 基本情况 return 是一个数组,但您会期望 BST(字典)作为 return 值。实际上,基本情况应该是列表的长度为零
- 递归调用的return值赋给了一个数据属性,但数据属性应该只取整数值,而不是BST(字典)
这是更正后的版本:
def build_bst(l):
if not l:
return None
mid = len(l) // 2
return {
"data": l[mid],
"left_child": build_bst(l[:mid]),
"right_child": build_bst(l[(mid+1):])
}
def build_bst(l):
if len(l) == 1:
return l
mid = len(l) // 2
return bst = {'data': l[mid]}, bst["left_child"] == {'data': build_bst(l[:mid])}, bst["right_child"] == {'data': build_bst(l[(mid+1):])}
sorted_list = [12, 13, 14, 15, 16]
binary_search_tree = build_bst(sorted_list)
print(binary_search_tree)
Error:
File "recursion.py", line 6
return bst = {'data': l[mid]}, bst["left_child"] == {'data': build_bst(l[:mid])}, bst["right_child"] ==
{'data': build_bst(l[(mid+1):])}
^
SyntaxError: invalid syntax
谁能解释一下我的代码有什么问题,我似乎找不到错误。
主要问题是:
- 您不能在 return 语句中使用
=
-- 这就是错误消息的内容;您应该首先在单独的语句中执行赋值,然后执行return
。或者,使用一个没有任何变量赋值的字典文字。 - 基本情况 return 是一个数组,但您会期望 BST(字典)作为 return 值。实际上,基本情况应该是列表的长度为零
- 递归调用的return值赋给了一个数据属性,但数据属性应该只取整数值,而不是BST(字典)
这是更正后的版本:
def build_bst(l):
if not l:
return None
mid = len(l) // 2
return {
"data": l[mid],
"left_child": build_bst(l[:mid]),
"right_child": build_bst(l[(mid+1):])
}