leetcode 257. 二叉樹的所有路徑

1. 目前而言,我還是更喜歡官方解法二,使用迭代來寫的話,更好理解一些

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

        # 同時保存節(jié)點和節(jié)點的值(節(jié)點經(jīng)過的路徑)
        stack = [(root, str(root.val))]

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

            # 如果已經(jīng)到了某個葉子節(jié)點,那就把當(dāng)前這條路徑加入到總的路徑中。
            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. 遞歸。評論區(qū)有一種寫法很簡潔,但是最后 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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容