#LAISIR35. 棋盤之上 · 龍域戰爭
棋盤之上 · 龍域戰爭
🎲 題目名稱:棋盤之上 · 龍域戰爭
📝 題目背景:
在一場魔法桌遊《龍域戰爭》中,玩家在一張由魔法棋盤構成的空中平台上展開佈陣。棋盤中央是一顆古老龍魂樹,其節點依照二元結構連接,每個節點代表一個兵種單位。
遊戲規則設計了這樣一個效果:
從上方俯視棋盤時,每個橫向位置只會看到最上層的單位,其下方的單位會被遮擋。
現在你作為遊戲系統的判定器,要即時還原這棵龍魂樹,並判斷在俯視視角下,玩家會看到哪些單位。
🎯 任務說明:
給定一棵龍魂樹的完全先序遍歷(含 "null"
代表空節點),請你重建這棵樹,並輸出從頂視角觀察時能看到的所有節點值。
頂視圖的定義為:
- 根節點的橫向位置為
x = 0
- 左子節點
x - 1
,右子節點x + 1
- 每個
x
只輸出第一次從上而下出現的節點
請依照 x
值從小到大輸出這些節點值。
📥 輸入格式:
第一行:整數 n(1 ≤ n ≤ 10^5),表示先序序列長度(包含 "null")
第二行:n 個字串,以空格分隔
- 非空節點為整數(-10^5 到 10^5),代表單位編號
- 空節點為字串 "null"
📤 輸出格式:
一行輸出,為從上往下觀察到的所有節點值,依照橫向位置 x 從小到大排列,以空格分隔。
📘 輸入範例:
13
1 2 4 null null 5 null null 3 null 6 null null
📗 輸出範例:
4 2 1 3 6
🌳 樹結構示意:
重建後的龍魂樹:
1
/ \
2 3
/ \ \
4 5 6
橫向位置對應:
- 4 → x = -2
- 2 → x = -1
- 1 → x = 0
- 3 → x = 1
- 6 → x = 2
頂視圖即為每個 x 的第一個節點(由上往下)
Related
In following homework: