Milky's note

[HackerRank](M) Binary Tree Nodes 본문

SQL/SQL 코딩 테스트-HackerRank

[HackerRank](M) Binary Tree Nodes

밀뿌 2022. 3. 18. 03:11

https://www.hackerrank.com/challenges/binary-search-tree-1/problem?isFullScreen=true 

 

Binary Tree Nodes | HackerRank

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

www.hackerrank.com

 

[문제]

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문을 조회하는 쿼리로 작성해주었다! 

Comments