199.Binary_Tree_Right_Side_View

25 年 7 月 3 日 星期四
316 字
2 分钟
Screenshot 2026-03-07 at 9.40.17 pm

思路:先递归右子树,再递归左子树,当某个深度首次到达时,对应的节点就在右视图中。

js
var rightSideView = function (root) {
  const ans = []
  function dfs(node, depth) {
    if (node === null) {
      return
    }
    if (depth === ans.length) {
      // 这个深度首次遇到
      ans.push(node.val)
    }
    dfs(node.right, depth + 1) // 先递归右子树,保证首次遇到的一定是最右边的节点
    dfs(node.left, depth + 1)
  }
  dfs(root, 0)
  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进行许可。