泛型树Next larger element求解代码列表为空问题排查
错误原因
列表为空和你存储节点地址没有任何关系,两个核心错误直接导致代码运行异常:
- 你定义了用于遍历树的递归函数
helper,但从未主动调用该函数。初始化后的空列表li没有执行过任何元素追加操作,排序时自然还是空值。 - 你定义的
helper仅接收1个形参,但递归调用时传入了child和n两个参数,即便补上初始调用,也会触发参数数量不匹配的运行时错误。
修复后的代码
只需要补上递归函数的初始调用,同时删除递归传参时多余的n即可,你的整体思路是可运行的:
def nextLargest(tree, n): li = [] def helper(node): li.append([node, node.data]) for child in node.children: helper(child) # 启动递归遍历 helper(tree) li = sorted(li, key=lambda x: x[1]) for ele in li: if ele[1] > n: return ele[0]
补充说明:Python中列表存储对象引用是完全正常的操作,不会导致append失效,也不会丢失节点数据。你提到的非最优问题确实存在——不需要把所有节点存入列表再排序,遍历过程中维护一个记录「值大于n且最小」的对应节点,就能把时间复杂度从O(klogk)降到O(k)(k为节点总数),但这不影响你当前写法修复后正常通过用例。
内容的提问来源于stack exchange,提问作者code_dominar
相关产品推荐
相关产品推荐

