199. 二叉树的右视图
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*
* Code by java
*/
class Solution {
List<Integer> res = new ArrayList<>(); //创建结果集合
public List<Integer> rightSideView(TreeNode root) {
dfs(root, 0);
return res;
}
private void dfs(TreeNode root, int depth) {
if(root == null) { return; }
if(depth == res.size()) { res.add(root.val); } //当前深度等于结果集合大小,正好就是每一层访问的第一个节点
depth++;
dfs(root.right, depth); //dfs调用顺序是:根节点,右子树,左子树
dfs(root.left, depth);
}
}