728x90
반응형
문제에 대한 오해가 있어서..
역대급으로 틀려버렸다..
역시 오해는 금물!!
문제
left와 right 높이 차이가 1보다 크게 나면 false, 아니면 true를 return 하는 문제!
근데 나는 여기서 root의 left , right 로 생각하면 되는 줄 알고..
계속 root의 왼쪽과 오른쪽의 최대 높이를 구하고 그 두 개를 비교했다..
나의 오답
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isBalanced(TreeNode root) {
if(root == null) {
return true;
}
int rightHeight = check(root.right, 1);
int leftHeight = check(root.left, 1);
if( Math.abs(rightHeight - leftHeight) > 1) {
return false;
} else {
return true;
}
}
public int check(TreeNode tree, int height) {
if(tree == null) return height;
return Math.max(check(tree.right, height+1), check(tree.left, height+1));
}
}
근데 계속 틀리는 것..
그래서 확인을 해보았더니
이런 경우도 false로 생각하고 있는 것을 발견!
그래서 아님을 깨닫고 수정에 들어가서 정답을 맞췄다.!
나의 정답
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isBalanced(TreeNode root) {
if(root == null) {
return true;
}
return check(root, 1) != -1;
}
public int check(TreeNode tree, int height) {
if(tree == null) return height;
int rightHeight = check(tree.right, 1);
int leftHeight = check(tree.left, 1);
if( Math.abs(rightHeight - leftHeight) > 1) {
return -1;
}
return Math.max(check(tree.right, height+1), check(tree.left, height+1));
}
}
오래걸리긴 했지만
이번엔 진짜 내 힘으로 풀 수 있어서 좋았다.!
사실 다른 분들이 푼거 찾아봤는데, 내가 문제가 이해 덜 된 상태였어서
다른 분들의 해답이 이해가 가지 않아서 계속 내 소스로 하려고 고집부림..
그러다가 오답을 보고 이해하고!!
다음에는 compile error 내지 않고 차근차근 해보기!
바로바로 풀다보니 에러가 너무 많이 난다..
천천히 하즈아!!
728x90
반응형
'ALGORITHM > Java algorithm' 카테고리의 다른 글
[JAVA][LeetCode] #1. Two Sum (1) | 2022.11.21 |
---|---|
[LeetCode][Java] 111. Minimum Depth of Binary Tree (0) | 2022.09.05 |
[LeetCode][Java] 101. Symmetric Tree (0) | 2022.09.01 |
[LeetCode][Java] 100. Same Tree (0) | 2022.09.01 |
[백준] 1655번 가운데를 말해요 (2) | 2021.01.17 |