0
我有一個右偏的紅黑樹形結構,它在給定元素總數的情況下始終是某種形狀。具有序號索引的訪問樹
給定元素k
的大小和序數元素n
,如何編寫函數來獲取大小爲k
的樹中的第n個元素?
(size:1)
black { 1, 1 }(d:1)
+
+
(size:2)
black { 1, 1 }(d:1)
+
+ red { 2, 2 }(d:1)
+
+
(size:3)
black { 2, 2 }(d:2)
+ black { 1, 1 }(d:1)
+
+
+ black { 3, 3 }(d:1)
+
+
(size:4)
black { 2, 2 }(d:2)
+ black { 1, 1 }(d:1)
+
+
+ black { 3, 3 }(d:1)
+
+ red { 4, 4 }(d:1)
+
+
(size:5)
black { 2, 2 }(d:2)
+ black { 1, 1 }(d:1)
+
+
+ red { 4, 4 }(d:2)
+ black { 3, 3 }(d:1)
+
+
+ black { 5, 5 }(d:1)
+
+
(size:6)
black { 2, 2 }(d:2)
+ black { 1, 1 }(d:1)
+
+
+ red { 4, 4 }(d:2)
+ black { 3, 3 }(d:1)
+
+
+ black { 5, 5 }(d:1)
+
+ red { 6, 6 }(d:1)
+
+
(size:7)
black { 4, 4 }(d:3)
+ black { 2, 2 }(d:2)
+ black { 1, 1 }(d:1)
+
+
+ black { 3, 3 }(d:1)
+
+
+ black { 6, 6 }(d:2)
+ black { 5, 5 }(d:1)
+
+
+ black { 7, 7 }(d:1)
+
+
(size:8)
black { 4, 4 }(d:3)
+ black { 2, 2 }(d:2)
+ black { 1, 1 }(d:1)
+
+
+ black { 3, 3 }(d:1)
+
+
+ black { 6, 6 }(d:2)
+ black { 5, 5 }(d:1)
+
+
+ black { 7, 7 }(d:1)
+
+ red { 8, 8 }(d:1)
+
+
(size:9)
black { 4, 4 }(d:3)
+ black { 2, 2 }(d:2)
+ black { 1, 1 }(d:1)
+
+
+ black { 3, 3 }(d:1)
+
+
+ black { 6, 6 }(d:2)
+ black { 5, 5 }(d:1)
+
+
+ red { 8, 8 }(d:2)
+ black { 7, 7 }(d:1)
+
+
+ black { 9, 9 }(d:1)
+
+
(size:10)
black { 4, 4 }(d:3)
+ black { 2, 2 }(d:2)
+ black { 1, 1 }(d:1)
+
+
+ black { 3, 3 }(d:1)
+
+
+ black { 6, 6 }(d:2)
+ black { 5, 5 }(d:1)
+
+
+ red { 8, 8 }(d:2)
+ black { 7, 7 }(d:1)
+
+
+ black { 9, 9 }(d:1)
+
+ red { 10, 10 }(d:1)
+
+
而不是存儲每個節點的深度,嘗試存儲的大小(或左孩子的數量)。 – Bergi
只是想通了。原來你不需要存儲大小(可以根據深度信息計算) –
@Bergi這隻適用於紅黑樹。對於其他樹,您必須存儲節點數。 –