https://www.hackerrank.com/challenges/binary-search-tree-1/problem
ㅋ......다 풀었는데 어이없는 실수 하나랑 개념을 제대로 알지 못해 틀렸다.
CASE WHEN ..
WHEN ..
이런 식으로 작성해야하는데
CASE WHEN ..
CASE WHEN ..
CASE를 또 씀....그러니 당연히 오류가 나지.......
IN의 경우 서브쿼리의 결과로 나온 값들 중 일치하는 값이 하나라도 있으면 된다.
그러나 NOT IN은 서브쿼리의 결과로 나온 모든 값들과 일치하지 않는지를 체크하게 된다.
이래서 다 풀고도 틀렸다.
SELECT N
, CASE WHEN P IS NULL THEN 'Root'
WHEN N NOT IN (SELECT DISTINCT P FROM BST) THEN 'Leaf'
ELSE 'Inner'
END
FROM BST b
ORDER BY N
-> 이렇게 하면 Leaf 값이 적절하게 나오지 않음. Root아님 전부 Inner로 나온다.
SELECT N
, CASE WHEN P IS NULL THEN 'Root'
WHEN N IN (SELECT DISTINCT P FROM BST) THEN 'Inner'
ELSE 'Leaf'
END
FROM BST b
ORDER BY N