#LAISIR28. 鏡之神樹 · 動態審判

鏡之神樹 · 動態審判

🧮 題目名稱:鏡之神樹 · 動態審判

📝 題目背景:

在神秘的鏡之森林中,精靈們正小心翼翼地建造一棵傳說中的神樹。

相傳,只有在任何時刻都維持鏡像對稱的神樹,才能獲得女神的賜福。每當新的一片枝葉被接上,女神便會施行一次鏡像審判。

若神樹呈現鏡像對稱(左右子樹結構與節點值皆鏡像),光芒降臨;反之,黑暗蔓延

你的任務是即時回應每一次審判,判斷目前整棵神樹是否對稱。


🎯 任務說明:

請設計一個程式,能夠根據動態的節點插入操作,即時判斷目前整棵神樹是否鏡像對稱。


📥 輸入格式:

第一行一個整數 q(1 ≤ q ≤ 10⁵),表示操作的總數。

接下來 q 行,每行為下列兩種操作之一:

ADD <parent> <side> <value>

QUERY
  • ADD:將值為 <value> 的新節點,接到節點 <parent><side> 方向。

    • <parent>:節點編號(正整數)
    • <side>L 表示左子,R 表示右子
    • <value>:節點的字串值(不含空白,長度不超過 10)
  • QUERY:進行一次鏡像審判(判斷目前整棵樹是否對稱)

注意:

  • 編號為 0 表示這是第一個節點(作為根節點),僅第一次出現時使用。
  • 每個節點最多插入一次左子與右子,不會有重複或無效操作。
  • 初始樹為空。

📤 輸出格式:

對於每個 QUERY 操作,輸出一行:

  • 若目前整棵神樹為對稱二元樹,輸出:

    光芒降臨
    
  • 否則輸出:

    黑暗蔓延
    

📘 輸入範例:

7
ADD 0 L a
ADD 1 L b
ADD 1 R b
ADD 2 L x
ADD 3 R x
QUERY
ADD 2 R y
QUERY

📗 輸出範例:

光芒降臨
黑暗蔓延

📊 資料範圍與限制:

  • 操作次數 q 滿足 1 ≤ q ≤ 10⁵
  • 節點編號為 1 至 q(每新增一節點,給它下一個編號)
  • 每個節點值為長度不超過 10 的字串
  • 操作順序合法(即不會引用未定義的節點)