【问题标题】:Python - implementing binary tree using recursionPython - 使用递归实现二叉树
【发布时间】:2021-12-12 01:16:27
【问题描述】:
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

谁能解释我的代码有什么问题,我似乎找不到错误。

【问题讨论】:

  • 问题是什么?
  • 问题是将排序列表作为使用递归创建二叉树的函数的参数

标签: python recursion binary-tree


【解决方案1】:

主要问题是:

  • 您不能在返回语句中使用=——这就是错误消息的内容;您应该首先在单独的语句中执行分配,然后执行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):])
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 2021-07-03
    • 2019-04-17
    • 2016-04-19
    • 2014-03-29
    • 1970-01-01
    • 2012-07-11
    相关资源
    最近更新 更多