본문 바로가기

SQL/[HackerRank]

[HackerRank/MySQL] Binary Tree Nodes

728x90

< Problem >

이진 트리 노드 구분하기
- Leaf : N에 존재, P에는 없음.
- Inner : N과 P 모두에 있음.
- Root : N에 존재, P = Null

링크:  https://www.hackerrank.com/challenges/binary-search-tree-1/problem

 

Binary Tree Nodes | HackerRank

Write a query to find the node type of BST ordered by the value of the node.

www.hackerrank.com


< Code >

SELECT n, (CASE
                WHEN p IS NULL THEN 'Root'
                WHEN n NOT IN (SELECT DISTINCT p FROM bst WHERE p IS NOT NULL) THEN 'Leaf'
                ELSE 'Inner'
            END) AS value
FROM bst
ORDER BY n ASC

 

< Lesson & Learned >

SELECT: 키워드와 함께 검색하고 싶은 속성의 이름을 나열
FROM: 키워드와 함께 검색하고 싶은 속성이 있는 데이블의 이름을 나열

WHERE: 키워드와 함께 비교 연산자(=, <, >=, <>)와 논리 연산자(AND, OR, NOT)를 이용한 검색 조건 제시
CASE~END: 다중 조건문에서 사용. (WHEN 조건 THEN 반환값) 형태로 작성하며, 모든 조건을 충족하지 않을 때 반환하는 값은 마지막에 (ELSE 반환값) 형태로 작성. 조건의 순서를 지정하는 것이 중요
IS NULL: 해당 칼럼에서 NULL인 값만 가져옴
IS NOT NULL: 해당 칼럼에서 NULL이 아닌 값만 가져옴
NOT IN 조건: 조건과 일치하지 않는 것이 있으면 검색조건이 참. 주로 WHERE 절에서 사용됨.
DISTINCT: 결과 테이블이 튜플의 중복을 허용하지 않도록 지정
ORDER BY: 결과 테이블 내용을 원하는 순서로 출력. 오름차순(기본): ASC, 내림차순: DESC

728x90