题目描述:
给定一个二叉树的 根节点 root
,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
题目来源:
思路:
首先遍历根节点,然后遍历右节点,当最右节点符合要求,那么这一层的其他节点不再计入
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 {
int height=-1;
public List<Integer> rightSideView(TreeNode root) {
List<Integer> list=new ArrayList<>();
dfs(root,0,list);
return list;
}
private void dfs(TreeNode root,int h,List<Integer> list){
if (root == null) return;
if (h > height){//确保每一层只有最右边节点的计入
list.add(root.val);
height = h;
}
dfs(root.right,h+1,list);
dfs(root.left,h+1,list);
}
}