二叉树续

2019-12-27  本文已影响0人  couriravant

199. 二叉树的右视图

层级遍历取每层最后一个

class Solution {
     List<List<Integer>> levels = new ArrayList<List<Integer>>();
     List<Integer> res = new ArrayList<>();

    public void helper(TreeNode node, int level) {
        // start the current level
        if (levels.size() == level)
            levels.add(new ArrayList<Integer>());

         // fulfil the current level
         levels.get(level).add(node.val);

         // process child nodes for the next level
         if (node.left != null)
            helper(node.left, level + 1);
         if (node.right != null)
            helper(node.right, level + 1);
    }
    public List<Integer> rightSideView(TreeNode root) {
           if (root == null) return res;
            helper(root, 0);
            for(List<Integer> s : levels) {
                res.add(s.get(s.size()-1));
            }
        return res;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读