leetcode Binary Tree Right Side View

来源:互联网 发布:去日本必买的东西知乎 编辑:程序博客网 时间:2024/06/09 19:53

题目链接

思路:
就是层次遍历。在没排最结尾的位置添加一个标志。然后把最后一个输出就好了

/** * 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>  result=new LinkedList<Integer>();        if(root==null)        {            return result;        }        Queue<TreeNode>  queue=new LinkedList<TreeNode>();        queue.add(root);        queue.add(null);        TreeNode current;        TreeNode cache=root;        while(queue.size()>=1)        {            current=queue.poll();            if(current==null)            {                queue.add(null);                result.add(cache.val);                if(queue.size()==1)                {                    break;                }                else                {                    continue;                }            }            cache=current;            if(current.left!=null)            {                queue.add(current.left);            }            if(current.right!=null)            {                queue.add(current.right);            }        }        return result;    }}
0 0