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):])
  }