leetcode144前序遍历递归问题


        def dfs(root):
            res = []
            if root == None:
                return res
            res.append(root.val)
            dfs(root.left)
            dfs(root.right)

            return res

Input
root =
[1,null,2,3]
Output
[]
我是用递归解法 请问问题出在哪里?

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
你的代码递归逻辑本身没有问题,但在 dfs(root.left)dfs(root.right) 这两行代码中,返回的遍历结果没有被保存在 res 中,这就导致最终的结果是一个空列表 []。因此,你需要将这两行代码修改为:

res.extend(dfs(root.left))
res.extend(dfs(root.right))

这样,在递归遍历左子树和右子树时,返回的结果会被添加到 res 列表中。修改后的完整代码如下:

class Solution:
    def preorderTraversal(self, root: TreeNode) -> List[int]:
        def dfs(root):
            res = []
            if root == None:
                return res
            res.append(root.val)
            res.extend(dfs(root.left))
            res.extend(dfs(root.right))

            return res
        
        return dfs(root)

希望能帮助到你。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢