leetcode.com/problems/average-of-levels-in-binary-tree/
๊ธฐ์ด BFS๋ฌธ์ ์ธ๋ฐ, BFS๋ก ํ ์ ์์์ ํ์ ํ๋ ๋ฐ ์ค๋ ๊ฑธ๋ ธ๋ค. ์ฌํ๋ค.
root
๋ฅผ Queue<TreeNode> queue
์ ๋ฃ์ ๋ค์์, ํ๋์ฉ ๋ฝ์ผ๋ฉด์ left
์ right
๋
ธ๋๋ฅผ ๋ค์ queue
์ ๋ฃ์ด์ค๋ค.
while
๋ฌธ์ ํ๋ฉด์ ํ ๋ ๋ฒจ์ ๋
ธ๋๊ฐ์๊ฐ ๋ณ์ size
์ ๋ค์ด๊ฐ ๊ฒ์ด๊ณ , ๊ทธ size
๋งํผ for
๋ฌธ์ ํ๋ฉด์ ๋ค์ ๊ทธ ๋
ธ๋๋ค์ ์์ ๋
ธ๋๋ค์ ๋ฃ์ด์ค๋ค. ์ด๋ sum
๋ณ์์ ๊ฐ ๋
ธ๋์ val
๋ ๋ฃ์ด์ค๋ค.
for
๋ฌธ์ ๋์ค๊ณ ๋์๋ ์ฌํ๊น์ง ๊ณ์ฐ๋ sum
์ size
๋ก ๋๋๋ฉด ํด๋น ๋ ๋ฒจ์ ํ๊ท ๊ฐ์ ๊ตฌํ ์ ์๊ฒ ๋๋ค.
3
/ \
9 20
/ \
15 7
๋ฌธ์ ์์ ์ฃผ์ด์ง ์ ์์๋ก ์๊ฐํด๋ณด๋ฉด,
root
์ธ 3์ผ ๋์๋ for
๋ฌธ์ ํ๋ฉด์ queue
์ 9์ 20์ด ๋ค์ด๊ฐ ๊ฒ์ด๊ณ , ๊ทธ ๋ค์๋ฒ while
์ ๋ ๋์๋ size=2
๊ฐ ๋๋ฉด์ for
๋ฌธ์ 2๋ฒ ๋๊ฒ ๋๋ค. ์ด๋ 9์ 20์ ๋ชจ๋ pop()
๋์ง๋ง, ๊ทธ ์์๋
ธ๋๋ค์ด ๋ค์ add()
๋๊ณ , ๋์์ sum
๋ณ์์ 9์ 20์ด ๋ํด์ง๊ฒ ๋๋ค.
class Solution {
public List<Double> averageOfLevels(TreeNode root) {
//ํ๊ท ๊ฐ์ ๋ด์ List๋ณ์
List<Double> avg = new ArrayList<>();
if(root==null) return avg;
//Queue๋ฅผ ์์ฑํ์ฌ root ์ถ๊ฐ
Queue<TreeNode> que = new LinkedList<>();
que.add(root);
TreeNode curr;
while(!que.isEmpty()){
int size = que.size();
double sum = 0;
//๊ฐ ๋ ๋ฒจ์ ์กด์ฌํ๋ ๋
ธ๋์ ๊ฐ์๋งํผ for๋ฌธ์ ํ๋ฉด์ ๋
ธ๋๋ฅผ poll()
for(int i=0;i<size;i++){
curr = que.poll();
sum += curr.val;
if(curr.left!=null) que.add(curr.left);
if(curr.right!=null) que.add(curr.right);
}
//avg์ ํ๊ท ๊ฐ ์ ์ฅ
avg.add(sum/size);
}
return avg;
}
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฐ] Leetcode 1332 - Remove Palindromic Subsequences (0) | 2021.03.09 |
---|---|
[์๋ฐ] ๋ฆฌํธ์ฝ๋ 706 - Design HashMap (0) | 2021.03.07 |
[์๋ฐ] Leetcode 268 - Missing Number (0) | 2021.03.04 |
[์๋ฐ] Leetcode 234 - Palindrome Linked List (0) | 2021.03.01 |
[์๋ฐ] Leetcode 100 - Same Tree (0) | 2021.02.28 |