我創建了一個二叉樹結構來存儲一個有界的卷層次結構,使其更易於使用(並且更安全)我創建了兩個迭代器來補充它:寬度優先和深度優先。如何創建過去式迭代器?
廣度優先迭代器實質上是底層QList的包裝。但是我陷入了深度優先的迭代器(僅限於雙向),我可以處理樹周圍的實際迭代,我只是不知道如何創建一個過時的迭代器。
我不能僅僅使用,因爲不能保證最底層的最右邊的節點也是整個樹的最右邊的節點。我不願意做一個可以測試的'虛假'BVH節點,因爲它會涉及到大量的代碼更改(並且可能是開銷),讓各種節點管理機制忽略虛假節點,並且禁用很多樹型建築自動化(例如,假節點的父節點將不得不被告知它是葉子)。但如果這是唯一的方法 - 那麼這是唯一的方法。
和代碼? 。 –
我認爲這將是一個更結構性的問題。迭代器,樹形結構和BVH節點本身有數百行代碼。你想看什麼? – cmannett85
如果添加假節點,請記住它實際上不需要以任何方式連接到樹,或者甚至實際存在(對於某些容器)。唯一的要求是你的迭代器必須能夠從它到最後一個,並從最後一個到這個,這可以在_iterator的代碼中完成。 (取決於你的結構。) –