LeetCode 2096题代码报错:'TreeNode'对象不可迭代求助
问题原因与修复方案
错误根源
你遇到的TypeError是因为队列初始化时的语法错误:
q = collections.deque((get_lca,""))
这里的括号会把元组(get_lca,"")拆分成两个独立元素加入队列——第一个元素是TreeNode对象,第二个是空字符串。当执行node, path = q.popleft()时,第一次取出的是单个TreeNode对象,程序试图将其解包为两个变量,自然触发"TreeNode对象不可迭代"的错误。
修复方法
将队列初始化代码改为:
q = collections.deque([(get_lca,"")])
用方括号把元组包裹起来,这样队列中只会添加一个元素——即包含节点和初始路径的元组。后续popleft()取出的是完整的元组,就能正确解包给node和path两个变量。
补充说明
修改后,队列的初始状态是[(get_lca, "")],每次append的也是(子节点, 新路径)这样的元组,整个BFS过程中取出的元素都是可解包的二元组,代码就能正常运行了。
内容的提问来源于stack exchange,提问作者Kev Chen
相关产品推荐
相关产品推荐

