DFS 01

50 阅读1分钟

199. 二叉树的右视图

LeetCode 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);
    }
}