Number.199——二叉樹的右視圖

題目鏈接:https://leetcode-cn.com/problems/binary-tree-right-side-view/

給定一棵二叉樹,想象自己站在它的右側,按照從頂部到底部的順序,返回從右側所能看到的節點值。

示例:

在這裏插入圖片描述

題目思路:
  1. 層序遍歷二叉樹。只有這樣遍歷才能容易得到最右視圖
  2. 層序遍歷過程中,每次遍歷開始隊列中元素個數就是二叉樹每層的節點數量。知道這一點,很容易得到每一層最右邊的那個節點元素值。
  3. 每層的最右邊的元素值的數組集合就是答案
/**
 * 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) {
        List<Integer> res = new LinkedList<>();
        if (root == null){
            return res;
        }
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while ( ! queue.isEmpty()){
            int count = queue.size();		// 每層的節點個數
            int temp = 0;
            while(count > 0){
                TreeNode node = queue.poll();
                if (node.left != null){
                    queue.offer(node.left);
                }
                if (node.right != null){
                    queue.offer(node.right);
                }
                temp = node.val;		// 取每層的最後一個結點
                count--;
            }
            res.add(temp);
        }
        return res;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章