728x90
반응형
해커 랭크 - https://www.hackerrank.com/
Prepare > SQL > Advanced Select > Binary Tree Nodes
주어진 테이블 BST에는 두 개의 열이 있습니다: N과 P. 여기서 N은 이진트리의 노드 값을 나타내고, P는 N의 부모를 나타냅니다.
이진트리의 노드 유형을 값의 순서대로 정렬하여 찾는 쿼리를 작성하세요. 각 노드에 대해 다음 중 하나를 출력합니다.
- Root : 노드가 루트 노드인 경우.
- Leaf : 노드가 리프 노드인 경우.
- Inner : 노드가 루트 노드도 리프 노드도 아닌 경우.
Sample Input
Sample Output
1 Leaf
2 Inner
3 Leaf
5 Root
6 Leaf
8 Inner
9 Leaf
Explanation
아래의 이진트리는 예시를 보여줍니다.
반응형
MySQL
SELECT CONCAT(N, ' ', CASE
WHEN P IS NULL
THEN 'Root'
WHEN N IN (SELECT P FROM BST)
THEN 'Inner'
ELSE 'Leaf'
END
)
FROM BST
ORDER BY N ASC;
Oracle
SELECT N || ' ' || CASE
WHEN P IS NULL
THEN 'Root'
WHEN N IN (SELECT P FROM BST)
THEN 'Inner'
ELSE 'Leaf'
END
FROM BST
ORDER BY N ASC;
MS SQL Server
SELECT CONCAT(N, ' ', CASE
WHEN P IS NULL
THEN 'Root'
WHEN N IN (SELECT P FROM BST)
THEN 'Inner'
ELSE 'Leaf'
END
)
FROM BST
ORDER BY N ASC;
- MySQL, MSSQL에서는 CONCAT() 함수를 사용하여 문자열을 연결.
- ORACLE에서는 || 연산자를 사용하여 문자열을 연결.
- CASE문의 기본 구조
CASE
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
...
ELSE 기본결과
END
개인 공부를 위한 포스팅입니다.
모든 번역, 코드는 완벽하지 않을 수 있습니다.
728x90
반응형
'> 개발-IT-인터넷 > > SQL' 카테고리의 다른 글
[해커랭크(HackerRank) SQL 풀이] - Revising Aggregations - The Count Function (0) | 2024.01.04 |
---|---|
[해커랭크(HackerRank) SQL 풀이] - New Companies (0) | 2023.12.22 |
[해커랭크(HackerRank) SQL 풀이] - Occupations (0) | 2023.12.12 |
[해커랭크(HackerRank) SQL 풀이] - The PADS (2) | 2023.12.07 |
[해커랭크(HackerRank) SQL 풀이] - Type of Triangle (0) | 2023.11.30 |