티스토리 뷰
Given a binary tree, return the sum of values of its deepest leaves.
Example 1:
Input: root = [1,2,3,4,5,null,6,7,null,null,null,null,8]
Output: 15
Constraints:
The number of nodes in the tree is between 1 and 10^4.
The value of nodes is between 1 and 100.
var deepestLeavesSum = function(root) {
let maxDepth = 0;
const arr = [];
const dfs = (root, curDepth) => {
if(!root) return;
if(!root.left && !root.right) {
arr.push({
depth: curDepth,
value: root.val
});
maxDepth = Math.max(maxDepth, curDepth);
}
dfs(root.left, curDepth + 1);
dfs(root.right, curDepth + 1);
}
dfs(root, 0);
const result = arr.reduce((acc, cur) => {
return cur.depth === maxDepth ? acc + cur.value : acc + 0;
}, 0);
return result;
};
dfs로 트리를 순회하면서 현재 깊이값을 기록한다. 현재 노드가 잎일 경우 현재 노드의 깊이와 value를 배열에 저장해둔다. 그리고 최대 깊이 또한 기록해둔다.
모든 트리를 순회하고 나서 아까 저장해둔 배열을 한번더 순회하면서 최대 깊이와 똑같은 깊이를 가진 엘리먼트를 찾아서 그 엘리먼트의 value를 더해서 리턴하면 된다.(그러면 트리에 있는 모든 최대 깊이 노드들의 value를 더해줄수있다.)
'알고리즘' 카테고리의 다른 글
[leetcode, Medium] Group Anagrams (0) | 2020.06.28 |
---|---|
[프로그래머스, 레벨3, 해시] 베스트앨범 (0) | 2020.06.28 |
[트리] 이진 트리의 최대 깊이 (104. Maximum Depth of Binary Tree) (0) | 2020.06.21 |
[트리] 왼쪽 잎들의 합을 구하기(404. Sum of Left Leaves) (0) | 2020.06.21 |
Longest Palindromic Substring (0) | 2020.06.05 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- useRef
- typescript
- webpack
- hydrate
- state
- es6
- async
- atomic design
- promise
- reflow
- type alias
- Polyfill
- reducer
- return type
- Next.js
- storybook
- Babel
- design system
- Action
- mobx
- useEffect
- reactdom
- await
- rendering scope
- react
- react hooks
- props
- javascript
- computed
- server side rendering
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함