0
我正在重寫一箇舊項目。出於神祕原因(遺留公司數據庫,無法更改),樹狀數據以特殊方式存儲在數據庫中:每個節點都定義了兩個屬性:節點深度和最底層深度子節點的列表。從只有深度和最底層兒童信息的節點構建樹
我將如何處理轉換爲常規樹?我目前正處於將所有節點放置在樹中的級別,但我現在處於虧損狀態。有一件事我想到的是從最深層次上添加節點並上到根節點,但是這與很多懸掛節點和調整樹的大小息息相關。
編輯:剛纔意識到我的方法將涉及檢查每個低級別節點的組合,以找到一個子級總和等於高級級別的節點。不。
''只是檢查每個子節點對所有父節點「 - 爲什麼你要這樣做,如果可以的話,如你所說,只要檢查一個孩子的祖先是否包含在父輩的祖先之內? – Dukeling
@Dukeling通過父節點,我的意思是所有深度爲「i」的節點,並且由子節點表示深度爲「i + 1」的所有節點。據我所知,沒有簡單的方法來決定一個孩子屬於哪個父母,所以你需要全部嘗試,看看你有哪個子集。 –
嗯,你只需要檢查一個孩子的祖先是否包含在祖先的祖先內(只要節點是唯一的,這個檢查就足夠了)(這將是O(n)而不是O(n^2)),或O(log n)而不是O(n)(如果使用排序列表(與本機檢查全部節點,即交集進程相比))。 – Dukeling