二叉树的右视图
2026年4月14日大约 1 分钟
二叉树的右视图
使用的方法
递归
解题思路
- 二叉树的右视图是指从右侧观察二叉树时,能够看到的节点值。我们可以使用深度优先搜索(DFS)来实现这个功能。
- 在DFS过程中,我们首先访问右子树,然后访问左子树。这样可以确保我们先访问右侧的节点,从而能够记录下每一层的第一个节点。
- 我们可以维护一个列表来存储每一层的第一个节点值。当访问到一个新的深度时,如果当前深度等于列表的大小,说明这是该层的第一个节点,我们将其值添加到列表中。
- 递归的终止条件是当节点为 null 时,返回。我们首先递归访问右子树,然后递归访问左子树,这样可以确保我们先访问右侧的节点,从而能够记录下每一层的第一个节点值。
- 最后返回存储了每一层第一个节点值的列表作为结果。
代码实现
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public List<Integer> rightSideView(TreeNode root) {
List<Integer> ans = new ArrayList<>();
dfs(root,0,ans);
return ans;
}
public void dfs(TreeNode root,int depth,List<Integer> ans){
if(root == null)
return;
if(depth == ans.size()){
ans.add(root.val);
}
dfs(root.right,depth+1,ans);
dfs(root.left,depth+1,ans);
}
}