199.Binary_Tree_Right_Side_View

25 年 7 月 3 日 星期四
277 字
2 分钟

BFS

My Solution:

python
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def rightSideView(self, root: Optional[TreeNode]) -> List[int]:
        if not root: return []
        ans = []
        queue = [root]
        while queue:
            n = len(queue)
            cur_level = []
            while n:
                cur = queue.pop(0)
                cur_level.append(cur.val)
                if cur.left: queue.append(cur.left)
                if cur.right: queue.append(cur.right)
                n -= 1
            ans.append(cur_level[-1])
        return ans

DFS

这个解法更类似于 104. 求depth中的用额外变量存储高度的解法

python
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def rightSideView(self, root: Optional[TreeNode]) -> List[int]:
        ans = []
        def dfs(root, d):
            if not root:
                return
            d += 1
            if d > len(ans):
                ans.append(root.val)
            dfs(root.right, d)
            dfs(root.left, d)
        dfs(root, 0)
        return ans
python
class Solution:
    def rightSideView(self, root: Optional[TreeNode]) -> List[int]:
        ans = []
        def dfs(node: Optional[TreeNode], depth: int) -> None:
            if node is None:
                return
            if depth == len(ans):  # 这个深度首次遇到
                ans.append(node.val)
            dfs(node.right, depth + 1)  # 先递归右子树,保证首次遇到的一定是最右边的节点
            dfs(node.left, depth + 1)
        dfs(root, 0)
        return ans

作者:灵茶山艾府
链接:https://leetcode.cn/problems/binary-tree-right-side-view/solutions/2015061/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-r1nc/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

文章标题:199.Binary_Tree_Right_Side_View

文章作者:Sirui Chen

文章链接:https://blog.siruichen.me/posts/199binary_tree_right_side_view[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。