您的位置:首页 > 其它

开始刷leetcode day17: Binary Tree Right Side View

2015-05-20 10:19 211 查看
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]
.

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 List<Integer> rightSideView(TreeNode root) {

List<Integer> result = new ArrayList<Integer>();

if(root == null) return result;

LinkedList<TreeNode> queue = new LinkedList<TreeNode>();

queue.add(root);

queue.add(null);

while(!queue.isEmpty())

{

TreeNode current = queue.removeFirst();

if(current == null)

{

if(queue.isEmpty()) break;

queue.add(null);

}else

{

if(queue.getFirst() == null)

result.add(current.val);

if(current.left != null) queue.add(current.left);

if(current.right != null) queue.add(current.right);

}

}

return result;

}

}

java里没有可以直接用的Queue,不像Stack。并且List是abstract class,需要使用arraylist。。。。。

总体的思想就是按level遍历。 在一层结束的时候加入null用来判断是参考网上的解决方法

注意queue的remove和Poll的区别:

The
remove
and
poll
methods
both remove and return the head of the queue. Exactly which element gets removed is a function of the queue's ordering policy. The
remove
and
poll
methods
differ in their behavior only when the queue is empty. Under these circumstances,
remove
throws
NoSuchElementException
,
while
poll
returns
null
.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: