力扣(LeetCode)199

題目地址:
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;
        
        
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章