leetcode 199. Binary Tree Right Side View

来源:互联网 发布:美丽说网络兼职客服 编辑:程序博客网 时间:2024/06/03 16:40
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.For example:Given the following binary tree,   1            <--- /   \2     3         <--- \     \  5     4       <---You should return [1, 3, 4].

其实就是记录每一层最右边的节点。

public class Solution {    public List<Integer> rightSideView(TreeNode root) {        ArrayList<Integer> res = new ArrayList<>();        if(root==null) return res;        // HashMap<Integer, Integer> levelMap = new HashMap<>();        // addRight(root, 0, levelMap);        // int len = levelMap.size();        // for(int i=0; i<len; i++){        //     res.add(levelMap.get(i));        // }        addNode(root, 0, res);        return res;    }    void addNode(TreeNode root, int level, ArrayList<Integer> res){        if(root==null) return;        if(res.size() <= level){            res.add(root.val);        }else{            res.set(level, root.val);        }        addNode(root.left, level+1, res);        addNode(root.right, level+1, res);    }    public void addRight(TreeNode root, int level, HashMap<Integer, Integer> map){        if(root==null) return;        map.put(level, root.val);        addRight(root.left, level+1, map);        addRight(root.right, level+1, map);    }}
原创粉丝点击