반응형
https://leetcode.com/problems/univalued-binary-tree/
1. 2022.02.20 시도
소요시간: 4분
class Solution {
public boolean isUnivalTree(TreeNode root) {
return traverse(root, root.val);
}
private boolean traverse(TreeNode root, int value) {
boolean ret = root.val == value;
if (root.left != null) {
ret = ret && traverse(root.left, value);
}
if (root.right != null) {
ret = ret && traverse(root.right, value);
}
return ret;
}
}
풀이 접근 과정
메소드 하나 만들어서 루트와 비교하면서 순회하면 되겠다 싶었다.
느낀점
- 나는 정말 루트값을 비교의 대상으로 삼았는데 여기서 아이디어는 구지 정말 루트값이 아니어도 된다는 것이다. 부모와 비교했을 때, 값이 다르면 그건 이미 univalued가 아니므로 루트의 값을 들고 다니지 않아도 된다. 더 간단히 하면 아래처럼 나타낼 수 있다.
class Solution {
public boolean isUnivalTree(TreeNode root) {
boolean left = (root.left == null)
|| (root.left.val == root.val)
&& isUnivalTree(root.left);
boolean right = (root.right == null)
|| (root.right.val == root.val)
&& isUnivalTree(root.right);
return left && right;
}
}
알고리즘 정리노트: .leetcode(알고리즘 문제풀이 접근)
반응형
'알고리즘 풀이' 카테고리의 다른 글
.leetcode(958. Check Completeness of a Binary Tree) (0) | 2022.02.22 |
---|---|
.leetcode(979. Distribute Coins in Binary Tree) (0) | 2022.02.20 |
.leetcode(938. Range Sum of BST) (0) | 2022.02.20 |
.leetcode(86. Partition List) (0) | 2022.02.06 |
.leetcode(513. Find Bottom Left Tree Value) (0) | 2022.02.06 |