LeetCode刷題--樹(四)層次遍歷

637. 二叉樹的層平均值

給定一個非空二叉樹, 返回一個由每層節點平均值組成的數組.

示例 1:

輸入:
3
/
9 20
/
15 7
輸出: [3, 14.5, 11]
解釋:
第0層的平均值是 3, 第1層是 14.5, 第2層是 11. 因此返回 [3, 14.5, 11].

class Solution {
    public List<Double> averageOfLevels(TreeNode root) {
    List<Double> list = new ArrayList<>();
    if(root == null) return list;
    //DFS層次遍歷,一般用隊列實現
    //隊列底層是用鏈表實現
    Queue<TreeNode> queue = new LinkedList<> ();
    queue.offer(root);
    while(!queue.isEmpty()){
        int size = queue.size();
        double sum = 0;
        for(int i = 0 ; i< size; i++){
           TreeNode node = queue.poll();
            sum += node.val;
            //記錄當前層,注意是node,而不是root
            if(node.left != null)  queue.offer(node.left);
            if(node.right != null)  queue.offer(node.right);
        }
         list.add(sum/size);
    }
    return list;
    }
}

513. 找樹左下角的值

給定一個二叉樹,在樹的最後一行找到最左邊的值。

示例 1:

輸入:

2

/
1 3

輸出:
1

示例 2:

輸入:

    1
   / \
  2   3
 /   / \
4   5   6
   /
  7

輸出:
7

class Solution {
    public int findBottomLeftValue(TreeNode root) {
     //DFS,層次遍歷
     Queue<TreeNode> queue = new LinkedList<>();
     queue.offer(root);
     while(!queue.isEmpty()){
         root = queue.poll();
         if(root.right != null) queue.offer(root.right);
         if(root.left != null) queue.offer(root.left);

     }
     return root.val;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章