LeetCode 筆記 - 919. Complete Binary Tree Inserter
介紹如何實作一個完全二元樹 (Complete Binary Tree) 的插入器類別。本文分析如何有效率地尋找下一個插入位置的父節點,並透過佇列 (Queue) 維持結構特性,確保每次插入都能符合完全二元樹的定義。
題目在此 919. Complete Binary Tree Inserter
簡單說就是實作一個操作完全二元樹的 class,初始給你的二元樹也會是完全二元樹。
解題思維
如果不清楚什麼是完全二元樹,可以先參考 Complete Binary Tree - Wikipedia
這題的關鍵在於如何快速地找到目前需要 insert 新節點的 parent。
為此我們可以在一開始使用 Breadth-First Search 來找到未來可以當作新節點的 parent 清單。
step 0: 將 root 跑過一次 Breadth-First Search,途中可以按照 Breadth-First Search 看到節點的順序,將 left or right 是空的節點加入 parent_queue。
step 1: 新增節點時,從 parent_queue 中 pop 出一個節點,並將新節點加入 parent_queue。如果 pop 出來的節點 left 跟 right 都有新節點了,則從 parent_queue 釋出。
剩下就是 Breadth-First Search的基本操作了。
程式碼
1 | # Definition for a binary tree node. |
