[leetcode-199]Binary Tree Right Side View(java)

来源:互联网 发布:盼望你会知什么歌 编辑:程序博客网 时间:2024/05/09 18:04

问题描述:
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].

分析:起初这道题还理解错了,以为是直接把树沿着右子树遍历一遍,实际上要稍微复杂一点。它要求是从右向左看到的第一个元素。相当于是每层都插入到一个队列了,然后看到的队列的末尾元素。这也就是解题的思想

代码如下:328ms

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public List<Integer> rightSideView(TreeNode root) {        List<Integer> res = new LinkedList<>();        List<TreeNode> tmp = new LinkedList<>();        if(root==null)            return res;        tmp.add(root);        while(tmp.size()>0){            int size = tmp.size();            int val = tmp.get(size-1).val;              res.add(val);            for(int i = 0;i<size;i++){                TreeNode nowNode = tmp.get(0);                tmp.remove(0);                if(nowNode.left!=null)                    tmp.add(nowNode.left);                if(nowNode.right!=null)                    tmp.add(nowNode.right);            }        }        return res;    }}
0 0
原创粉丝点击