推 HigherKuo:我想問的是,operator ++ --就是找下一個node,除了 05/13 17:29
→ HigherKuo:traverse整個tree一次之外(應該會慢到不行),有什麼比較 05/13 17:30
→ HigherKuo:聰明的方式呢? 05/13 17:31
→ bnsblue:其實有幾種case 如果有子樹的話可以直接找successor 05/13 18:20
→ bnsblue:還有一些case可以用記錄"從root走到這個點的過程" 05/13 18:21
→ bnsblue:但是還有一些case沒想到方法 05/13 18:21
推 HigherKuo:我想到的是,多用一個pointer指到parents。 05/13 21:10
→ bnsblue:可是那樣的memory overhead算是不小 尤其是10^5 nodes以上 05/13 23:21
→ bnsblue:不過我也不知道該選擇速度還是空間比較好 05/13 23:23
推 HigherKuo:嗯,先做出來卡要緊! XD 05/13 23:59
→ bnsblue:說得好XD 05/14 00:01
推 timrau:如果堅持要省下那個parent又想要快的話 請參考 05/14 00:33
→ timrau:"Threaded binary tree". 不過要把這東西寫對嘛...... 05/14 00:33
→ timrau:反正已經有code可看了,Wikipedia的第一個reference就是XD 05/14 00:35
→ bnsblue:也是蠻長的XD 05/14 00:46
推 timrau:C code都寫好放那邊了,OK的啦 XD 05/14 00:54
推 Archezoa:可是還要記錄threaded 我覺得可能變快 但不會省得樣子 05/14 01:18
→ bnsblue:有要多用ptr嗎?不是直接用leaves的左右子樹去指就好? 05/14 01:24
推 timrau:threaded可以偷用pointer的最後2 bits.... 05/14 01:25
推 Archezoa:哈~ 那還真是蠻麻煩的 05/14 01:52