【leetcode】199. Binary Tree Right Side Viewti

来源:互联网 发布:彻地钉db数据 编辑:程序博客网 时间:2024/06/11 05:08

题目要求:

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].

即给定一棵二叉树,假设你站在树的右边,从上往下返回你能看到的结点

思路:层序遍历,每层输出最靠右的结点就可以了

/** * 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;        }       //层序遍历,把每一层最后遍历到的一个结点放到result里        Queue<TreeNode> queue = new LinkedList<TreeNode>();        queue.offer(root);        TreeNode current;        while(!queue.isEmpty())        {            List<TreeNode> list = new LinkedList<TreeNode>();            int size=queue.size();            for(int i = 0;i<size;i++)            {                current = queue.peek();                queue.poll();                list.add(current);                if(current.left!=null)                {                    queue.offer(current.left);                }                if(current.right!=null)                {                    queue.offer(current.right);                }            }            result.add(list.get(list.size()-1).val);        }        return result;    }}


0 0
原创粉丝点击