leetcode 257. 二叉树的所有路径

1. 目前而言,我还是更喜欢官方解法二,使用迭代来写的话,更好理解一些

class Solution:
    def binaryTreePaths(self, root: TreeNode) -> List[str]:
        if not root:
            return [] 
        res = [] 

        # 同时保存节点和节点的值(节点经过的路径)
        stack = [(root, str(root.val))]

        while stack:
            node, path = stack.pop() 

            # 如果已经到了某个叶子节点,那就把当前这条路径加入到总的路径中。
            if not node.left and not node.right:
                res.append(path)
                
            if node.left:
                stack.append((node.left, path + "->" + str(node.left.val)))
            if node.right:
                stack.append((node.right, path + "->" + str(node.right.val)))
            
        return res 

2. 递归。评论区有一种写法很简洁,但是最后 return 的条件是什么呢?

class Solution:
            
    def binaryTreePaths(self, root: TreeNode) -> List[str]:
        if not root:
            return []
        if not root.left and not root.right:
            return [str(root.val)]
        paths = []
        if root.left:
            for i in self.binaryTreePaths(root.left):
                paths.append(str(root.val) + '->' + i)
        if root.right:
            for i in self.binaryTreePaths(root.right):
                paths.append(str(root.val) + '->' + i)
        return paths
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容