일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Limit
- 데이터분석
- SUM
- PostgreSQL
- 데이터리안 웨비나
- 파이썬
- pandas
- seaborn
- 머신러닝
- GROUPBY
- hackerrank
- Oracle
- having
- 다중 JOIN
- SQLite
- MySQL
- 데이터시각화
- matplotlib
- airflow.cfg
- SQL
- join
- 프로그래머스
- 전처리
- solvesql
- 그로스해킹
- airflow 설치
- not in
- TRUNCATE
- 결측값
- Round
- Today
- Total
Milky's note
[HackerRank](M) Binary Tree Nodes 본문
https://www.hackerrank.com/challenges/binary-search-tree-1/problem?isFullScreen=true
[문제]
You are given a table, BST, containing two columns: N and P, where N represents the value of a node in Binary Tree, and P is the parent of N.
Write a query to find the node type of Binary Tree ordered by the value of the node. Output one of the following for each node:
- Root: If node is root node.
- Leaf: If node is leaf node.
- Inner: If node is neither root nor leaf node.
Sample Input
Sample Output
1 Leaf
2 Inner
3 Leaf
5 Root
6 Leaf
8 Inner
9 Leaf
Explanation
The Binary Tree below illustrates the sample:
[답]
-mysql
select n,
(select
case
when p is null or 'null' then 'Root'
when n in (select distinct(p) from BST) then 'Inner'
else 'Leaf'
end)
from BST
order by n
이진트리에서 해당 노드가 어디 부분인지 조회하는 쿼리이다.
일단 Root는 부모 노드가 없다는 사실은 제일 먼저 인지하였다.
그리고 세 가지로 나누는 부분이라 case 문을 사용하는 것도 인지하였다.
그리고 Inner를 찾는 부분에서 조금 막혔다.
분명 규칙이 있는데 하고 계속 관찰했는데 n의 값이 p에 있으면 그건 Inner의 조건을 만족한다!!!
그래서 n이 p에 있는지 조회하였고, 있다면 Inner로 출력해주었다 !!
그 외에 아무 것도 해당되지 않으면 Leaf로 출력되게 쿼리를 짜주었다
그리고 기쁜 나머지 n 출력을 까먹어서 n이 조회되고, 그 뒤에 case문을 조회하는 쿼리로 작성해주었다!
'SQL > SQL 코딩 테스트-HackerRank' 카테고리의 다른 글
[HackerRank](E) Revising Aggregations - The Sum Function (0) | 2022.03.25 |
---|---|
[HackerRank](E) Revising Aggregations - The Count Function (0) | 2022.03.25 |
[HackerRank](M) The PADS (0) | 2022.03.18 |
[HackerRank](E) Type of Triangle (0) | 2022.03.18 |
[HackerRank](E) Employee Salaries (0) | 2022.03.18 |