#LAISIR15. 平衡化二元搜尋樹
平衡化二元搜尋樹
📘 題目名稱:平衡化二元搜尋樹(輸入先序,輸出層序)
📝 題目描述:
給定一棵二元搜尋樹(BST)的「完全先序遍歷結果」,請你還原這棵 BST,然後返回一棵平衡的 BST,其節點值與原樹完全相同,但結構需為平衡型。
你可以返回任意一棵符合條件的平衡 BST。
一棵 BST 是平衡的,當所有節點的左子樹與右子樹的高度差不超過 1。
📥 輸入格式:
輸入共兩行:
- 第一行:一個整數
n
,代表接下來有幾個節點(包含"null"
) - 第二行:
n
個以空格分隔的字串,為完全先序遍歷的結果,節點值為正整數或"null"
(字串)
範例:
7
1 null 2 null 3 null 4
📤 輸出格式:
一行,一個陣列,為結果平衡 BST 的**層序遍歷(Level-order traversal)**結果,其中 "null"
表示空節點。結尾需補齊 "null"
直到最後一個非空節點為止。
範例:
2 1 3 null null null 4
🔍 範例 1:
輸入:
7
1 null 2 null 3 null 4
輸出:
2 1 3 null null null 4
🔍 範例 2:
輸入:
3
2 1 3
輸出:
2 1 3
📌 限制條件:
- 1 ≤
n
≤ 2 × 10⁴ - 1 ≤ Node.val ≤ 10⁵
- 節點值不重複
- 第二行為完全先序遍歷結果,包含
"null"
表示空節點 - 輸出需為完整的層序遍歷結果,以
"null"
補足所有空位直到最後一個非空節點
Related
In following homework: