本文共 1350 字,大约阅读时间需要 4 分钟。
题目原文:
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].
题目大意: 给出一个二叉树,假设你的视线从右边看过去,返回从上到下你看到的节点(不在最右侧的都被挡上了)。 题目分析: 按层次遍历,求每层最后一个节点即可(即队列中改变层号的节点),在基础上修改代码即可。 源码:(language:java)/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public ListrightSideView(TreeNode root) { Queue queue=new LinkedList (); Queue levelqueue=new LinkedList (); List list=new ArrayList (); if(root == null) return list; queue.add(root); levelqueue.add(1); //list.add(root.val); while(!queue.isEmpty()) { TreeNode current = queue.remove(); int curLevel=levelqueue.remove(); if(current.left!=null) { queue.add(current.left); levelqueue.add(curLevel+1); } if(current.right!=null) { queue.add(current.right); levelqueue.add(curLevel+1); } if(levelqueue.isEmpty() == true || levelqueue.peek() == curLevel + 1) list.add(current.val); } return list; }}
成绩:
3ms,beats 10.90%,众数3ms,40.54%转载地址:http://sfomb.baihongyu.com/