Python递归实现二叉搜索树时触发SyntaxError语法错误问题求助
问题定位
- 核心语法错误在第6行的
return语句:Python不支持return 变量名 = 表达式这种写法,赋值语句不能直接放在return后面作为返回内容,这是触发SyntaxError的直接原因。 - 运算符使用错误:代码中
bst["left_child"] == ...的==是相等比较运算符,执行后会返回True/False布尔值,不是你需要的给字典键赋值的操作,赋值应该用=。 - 返回值逻辑错误:你用逗号分隔多个表达式写在return后,会返回一个由三个表达式结果组成的元组,完全不符合二叉搜索树的字典结构要求。
- 边界逻辑缺陷:仅处理了列表长度为1的场景,未处理列表为空的递归终止场景,且长度为1时直接返回列表,和其他节点的字典结构不统一,后续取值会报错。
修正后的可运行代码
def build_bst(l): # 处理空列表递归边界 if not l: return None # 叶子节点返回统一结构的字典 if len(l) == 1: return {'data': l[0], 'left_child': None, 'right_child': None} mid = len(l) // 2 # 先构建当前节点的字典结构 bst = { 'data': l[mid], 'left_child': build_bst(l[:mid]), 'right_child': build_bst(l[mid+1:]) } # 直接返回构建完成的节点 return bst sorted_list = [12, 13, 14, 15, 16] binary_search_tree = build_bst(sorted_list) print(binary_search_tree)
内容的提问来源于stack exchange,提问作者atomic-coder
相关产品推荐
相关产品推荐

