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
有人可以解釋我的代碼有什么問題嗎,我似乎找不到錯誤。
uj5u.com熱心網友回復:
主要問題是:
- 您不能
=在 return 陳述句中使用 - 這就是錯誤訊息的內容;您應該首先在單獨的陳述句中執行賦值,然后執行return. 或者,使用一個沒有任何變數賦值的字典文字。 - 基本情況回傳一個陣列,但您希望 BST(字典)作為回傳值。實際上,基本情況應該是當串列的長度為零時
- 遞回呼叫的回傳值分配給一個資料屬性,但資料屬性應該只獲取整數值,而不是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):])
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/344910.html
上一篇:int物件不可迭代添加兩個串列
下一篇:BST-類似結構元素遞回插入
