#LAISIR24. 族譜重建

族譜重建

📝 題目描述:

在一個失落的文明中,歷史學家找到了一份關於某個家族的古老卷軸。卷軸中記載的是一系列「父子關係」,但沒有標明誰是族長(根節點)。你的任務是:根據這些父子記錄構建出整棵家族族譜樹,並輸出族譜的先序遍歷結果(多叉樹)。


📥 輸入格式:

第一行為一個整數 n(1 ≤ n ≤ 10⁴),表示父子對的總數。 接下來 n 行,每行兩個字串 parent child,表示 childparent 的子節點。


📤 輸出格式:

一行,輸出整棵族譜樹的**先序遍歷(Preorder Traversal)**結果,以空格分隔。 遍歷規則為:根 → 第一個子 → 第二個子 → ……(子節點順序以輸入順序為準)


📊 數據範圍:

  • 所有名字為不超過 20 個字母的英文字母字串,保證唯一。
  • 所有關係構成一棵合法的有根樹。
  • 節點總數不超過 10⁴。

📘 輸入範例:

6
A B
A C
B D
B E
C F
C G

📗 輸出範例:

A B D E C F G

💡 說明:

根據關係我們可重建出如下多叉樹結構:

A
├── B
│   ├── D
│   └── E
└── C
    ├── F
    └── G

先序遍歷依序為:A B D E C F G