美文网首页
leetcode 257. 二叉树的所有路径

leetcode 257. 二叉树的所有路径

作者: fanchuang | 来源:发表于2020-01-18 14:02 被阅读0次

    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
    

    相关文章

      网友评论

          本文标题:leetcode 257. 二叉树的所有路径

          本文链接:https://www.haomeiwen.com/subject/fhmkzctx.html