2022년 09월 06일 화요일 - 왜 아직 화요일?
오늘 올려볼 문제는 814번 Binary Tree Pruning 이라는 문제이다.
사진을 클릭하면 해당 문제로 이동합니다.
오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.
이제는 이런 문제 많이 봐서 그런지 잘 풀린다!
입력
사진에서도 볼 수 있듯이 Binary Tree의 Root Node가 입력으로 들어온다.
풀이 및 코드
모든 SubTree의 값이 전부 0인 SubTree들을 제거한 후에 리턴하는 문제이다.
오늘은 처음부터 정답을 생각해냈다.
왼쪽, 오른쪽 노드가 각각 null이면 true, value가 0이면 true 이렇게 해서 dfs를 돌렸다.
또한 저 값들을 기준으로 노드를 제거해나가는 방식으로 문제를 풀었다.
이제 코드를 봐보자!
풀이코드
class Solution {
public TreeNode pruneTree(TreeNode root) {
if(solve(root)) root = null;
return root;
}
public boolean solve(TreeNode root) {
boolean left = false, right = false, value = root.val == 0;
if(root.left == null || root.left != null && solve(root.left)) {
root.left = null;
left = true;
}
if(root.right == null || root.right != null && solve(root.right)) {
root.right = null;
right = true;
}
return left && right && value;
}
}
제출 화면
원래 이런 문제 풀 때 정말 더럽게 풀었었는데 이제 경험이 좀 쌓였는지 잘 풀리는 것 같다.
내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.
'LeetCode 문제 풀이' 카테고리의 다른 글
[LeetCode] 94번 문제를 풀어보았다. (ft. java) (0) | 2022.09.08 |
---|---|
[LeetCode] 606번 문제를 풀어보았다. (ft. java) (0) | 2022.09.07 |
[LeetCode] 429번 문제를 풀어보았다. (ft. java) (2) | 2022.09.05 |
[LeetCode] 1448번 문제를 풀어보았다. (ft. java) (0) | 2022.09.01 |
[LeetCode] 804번 문제를 풀어보았다. (ft. java) (0) | 2022.08.17 |