題目地址:
https://leetcode-cn.com/probl...
題目描述:
給定一棵二叉樹,想象自己站在它的右側,按照從頂部到底部的順序,返回從右側所能看到的節點值。
示例:
輸入: [1,2,3,null,5,null,4]
輸出: [1, 3, 4]
解釋:
1 <---
/ \
2 3 <---
\ \
5 4 <---
解答:
層次遍歷二叉樹我們都會,就是用一個隊列,每一次都先取出一層,然後
把這一層的子節點(也就是下一層)在放入隊列中,能夠獲得每一層是因爲
每次取出一層都要先把這層的幾點數量讀出來,然後才能取出這一層所有
元素。
這一題也一樣,只不過這一題是從右到左層次遍歷,並且每次把該層第一個
元素的值放入結果集中。
java ac代碼:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<Integer> rightSideView(TreeNode root) {
ArrayDeque<TreeNode>deque = new ArrayDeque(100);
List<Integer>ans = new ArrayList(100);
if(root == null)return ans;
deque.offer(root);
while(!deque.isEmpty())
{
int n = deque.size();
ans.add(deque.peek().val);
for(int i = 0;i < n;i++)
{
TreeNode temp = deque.poll();
if(temp.right != null)
deque.offer(temp.right);
if(temp.left != null)
deque.offer(temp.left);
}
}
return ans;
}
}