> 개발-IT-인터넷/> SQL

[해커랭크(HackerRank) SQL 풀이] - Binary Tree Nodes

jini:) 2023. 12. 20. 09:36
728x90
반응형
해커 랭크 - https://www.hackerrank.com/
Prepare > SQL > Advanced Select > Binary Tree Nodes

 

 

HackerRank - Online Coding Tests and Technical Interviews

HackerRank is the market-leading coding test and interview solution for hiring developers. Start hiring at the pace of innovation!

www.hackerrank.com

 

 

주어진 테이블 BST에는 두 개의 열이 있습니다: N과 P. 여기서 N은 이진트리의 노드 값을 나타내고, P는 N의 부모를 나타냅니다.

[출처] https://www.hackerrank.com/challenges/binary-search-tree-1/problem

 

이진트리의 노드 유형을 값의 순서대로 정렬하여 찾는 쿼리를 작성하세요. 각 노드에 대해 다음 중 하나를 출력합니다.

  • Root : 노드가 루트 노드인 경우.
  • Leaf : 노드가 리프 노드인 경우.
  • Inner : 노드가 루트 노드도 리프 노드도 아닌 경우.

 

Sample Input

[출처] https://www.hackerrank.com/challenges/binary-search-tree-1/problem

 

Sample Output

1 Leaf
2 Inner
3 Leaf
5 Root
6 Leaf
8 Inner
9 Leaf

 

Explanation

아래의 이진트리는 예시를 보여줍니다.

[출처] https://www.hackerrank.com/challenges/binary-search-tree-1/problem

 

반응형

 

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
반응형