HackerRank 解鎖 - Binary Tree Nodes

DigNo Ape-avatar-img
發佈於SQL
更新於 發佈於 閱讀時間約 2 分鐘
raw-image

當我們需要處理層級結構的資料時,HackerRank - Binary Search Tree Nodes 這題應該算是個很經典的 SQL 分類題。這篇就來拆解這道題目,從題目概述、輸入格式、輸出格式到 SQL 解法,一步步分析如何解決這道題目。(本篇以MS SQL Server語法教學)

題目概述

在一棵 二元搜尋樹 (BST, Binary Search Tree) 中,每個節點 (Node) 可能屬於三種類型之一:

  1. Root (根節點):樹的起點,沒有父節點 (P IS NULL)。
  2. Leaf (葉節點):沒有子節點,也就是該節點的 N 不會出現在 P 欄位中。
  3. Inner (內部節點):既不是根節點,也不是葉節點,即它既有父節點,也有子節點。

我們的任務是根據 BST 資料表,判斷每個節點的類別,並按照 N 由小到大的順序輸出。


Input 格式

BST 表的結構如下:

raw-image


  • N:表示節點的值。
  • P:表示節點的父節點值,若為 NULL,則表示該節點是根節點 (Root)。
  • 節點值 (N) 唯一,不會重複。


Output 格式

我們希望查詢的結果如下:

raw-image
  • 依數字大小排序Node
  • 判斷每個Node的類別



SQL 解法

首先觀察輸出類別判定的特性,我們會發現:

  • Root (根節點):當 P IS NULL 時,該節點是根節點。
  • Leaf (葉節點):當 N 不在 P 欄位中,代表該節點沒有子節點,則為葉節點。
  • Inner (內部節點):若 N 既有父節點 (P IS NOT NULL),又出現在 P 欄位中,則是內部節點。


我們可以透過SQL裡的Case when 語法判定

  • 找出 Root (根節點)P IS NULL
  • 找出 Leaf (葉節點)N NOT IN (SELECT P FROM BST WHERE P IS NOT NULL)
  • 剩下的就是 Inner (內部節點)
SELECT
N,
CASE
WHEN P IS NULL THEN 'Root'
WHEN N IN (SELECT P FROM BST) THEN 'Inner'
ELSE 'Leaf'
END AS NodeType
FROM BST
ORDER BY N;



謝謝您花時間將此篇文章讀完,若覺得對您有幫助可以幫忙按個讚、分享來或是珍藏喔!也歡迎Follow我的ThreadsFB,持續追蹤生產力工具、商業分析、商業英文的實用範例,提升自己的職場力喔!



留言
avatar-img
留言分享你的想法!
avatar-img
DigNo Ape 數遊原人
54會員
138內容數
我們秉持著從原人進化的精神,不斷追求智慧的累積和工具的運用來提升生產力。我們相信,每一個成員都擁有無限的潛力,透過學習和實踐,不斷成長和進步。
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
當我們需要處理層級結構的資料時,HackerRank - Binary Search Tree Nodes 這題應該算是個很經典的 SQL 分類題。這篇就來拆解這道題目,從題目概述、輸入格式、輸出格式到 SQL 解法,一步步分析如何解決這道題目。(本篇以MS SQL Server語法教學)
Thumbnail
當我們需要處理層級結構的資料時,HackerRank - Binary Search Tree Nodes 這題應該算是個很經典的 SQL 分類題。這篇就來拆解這道題目,從題目概述、輸入格式、輸出格式到 SQL 解法,一步步分析如何解決這道題目。(本篇以MS SQL Server語法教學)
Thumbnail
Leetcode 精選75題 題目與題解 熱門考點 目錄 (持續更新中) 建議從左側目錄 或者 按Ctrl+F輸入關鍵字進行搜尋
Thumbnail
Leetcode 精選75題 題目與題解 熱門考點 目錄 (持續更新中) 建議從左側目錄 或者 按Ctrl+F輸入關鍵字進行搜尋
Thumbnail
題目給定一個布林代數的二元樹,要求我們計算最後的結果。 葉子節點都是真假值 非葉子節點都是布林運算子
Thumbnail
題目給定一個布林代數的二元樹,要求我們計算最後的結果。 葉子節點都是真假值 非葉子節點都是布林運算子
Thumbnail
這篇文章,會帶著大家複習以前學過的二元搜尋樹(Binary Search Tree)框架, 並且以二分搜尋樹的概念與定義為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 二元搜尋樹(Binary Search Tree)的定義
Thumbnail
這篇文章,會帶著大家複習以前學過的二元搜尋樹(Binary Search Tree)框架, 並且以二分搜尋樹的概念與定義為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 二元搜尋樹(Binary Search Tree)的定義
Thumbnail
題目會給定一個陣列nums和一個目標值goal。計算子陣列總和=goal的數目有多少。演算法包含前綴和和字典的技巧,時間複雜度為O(n),空間複雜度為O(n)。
Thumbnail
題目會給定一個陣列nums和一個目標值goal。計算子陣列總和=goal的數目有多少。演算法包含前綴和和字典的技巧,時間複雜度為O(n),空間複雜度為O(n)。
Thumbnail
題目敘述 題目會給定兩個輸入。 第一個輸入是關鍵字清單products,第二個是使用者輸入的字串searchWord。 要求我們實現關鍵字搜尋建議系統,使用者每輸入一個字元就推薦一次。 推薦時,優先返回字典序(Lecial order)最接近的關鍵字,最多不要超過三個關鍵字。 題目的原文
Thumbnail
題目敘述 題目會給定兩個輸入。 第一個輸入是關鍵字清單products,第二個是使用者輸入的字串searchWord。 要求我們實現關鍵字搜尋建議系統,使用者每輸入一個字元就推薦一次。 推薦時,優先返回字典序(Lecial order)最接近的關鍵字,最多不要超過三個關鍵字。 題目的原文
Thumbnail
題目敘述 題目已經給定一個Trie前綴樹的類別和相關的函式介面interface, 要求我們把功能實作出來。 Trie() 建構子,初始化一個空的Trie。 void insert(String word) 插入一個新的單字word到Trie裡面。 boolean search(Strin
Thumbnail
題目敘述 題目已經給定一個Trie前綴樹的類別和相關的函式介面interface, 要求我們把功能實作出來。 Trie() 建構子,初始化一個空的Trie。 void insert(String word) 插入一個新的單字word到Trie裡面。 boolean search(Strin
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News