學習軌道
/
Python
Python
/
練習
/
建立樹狀結構
建立樹狀結構

建立樹狀結構

簡單

說明

重構一個建立樹狀結構的演算法。

有些網路論壇採用樹狀的版面配置,因此文章會以樹狀結構呈現。 不過,這些文章通常是以一組未排序的紀錄儲存在資料庫中。 因此,在把文章呈現給使用者之前,必須先重建樹狀結構。

你的任務是重構一段能運作、卻又慢又醜的程式碼,它為高度抽象化的紀錄實作了樹狀結構的建立邏輯。 這些紀錄只包含一個 ID 編號和一個父 ID 編號。 ID 編號一定介於 0(含)和紀錄陣列的長度(不含)之間。 所有紀錄的父 ID 都比自己的 ID 小,唯一的例外是根紀錄,它的父 ID 等於自己的 ID。

以下是一棵範例樹:

root (ID: 0, parent ID: 0)
|-- child1 (ID: 1, parent ID: 0)
|    |-- grandchild1 (ID: 2, parent ID: 1)
|    +-- grandchild2 (ID: 4, parent ID: 1)
+-- child2 (ID: 3, parent ID: 0)
|    +-- grandchild3 (ID: 6, parent ID: 3)
+-- child3 (ID: 5, parent ID: 0)

例外訊息

有時你需要拋出例外。這麼做的時候,永遠要附上一段有意義的錯誤訊息,指出錯誤的來源是什麼。這會讓你的程式碼更好讀,對除錯也有很大的幫助。如果你知道錯誤來源會是某一種類型,可以選擇拋出其中一種內建錯誤類型,但還是要附上有意義的訊息。

這個練習要求你重構raise 敘述的使用方式和位置,讓它在樹的輸入無效時「拋出」ValueError。只有當程式碼raise了正確的exception,並附上適當的訊息時,測試才會通過。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Python Exercism

準備好開始 建立樹狀結構 了嗎?

註冊 Exercism,透過 17 個概念146 個練習 和真人引導來學習並精通 Python,全部免費。