[LeetCode] 199. Binary Tree Right Side View

這題的意思就是人站在一棵二叉樹右邊

   1            <---
 /   \
2     3         <---
 \     \
  5     4       <---
先是自己瞎想提交了好幾次都不對,然後網上看了看,很多人都是用的一層一層地遍歷然後存入最右邊的node.val

我的方法是類似遍歷前序二叉樹,每一層的深度通過deep記錄下來然後更新cache


class Solution(object):
    
    def rightSideView(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        if not root:
            return []
        self.cache = []
        self.deep = 1
        self.Read(root)
        return self.cache
        
    def Read(self,node):
        if self.deep > len(self.cache):
            self.cache.append(node.val)
        else :
            self.cache[self.deep - 1] = node.val
            
        if  node.left is not None:
            self.deep += 1
            self.Read(node.left)
        if  node.right is not None:
            if node.left is None:
                self.deep += 1
            self.Read(node.right)
        if node.left is None and node.right is None:
            self.deep += 1
        self.deep -= 1

速度比較慢...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章