我在課堂上獲得了紅黑樹的代碼。用於創建節點的結構沒有父指針。我的大部分項目都在工作,但我無法弄清楚如何計算O(lg n)時間的排名。通過排名,我的意思是如果你要做一個遍歷遍歷並將索引保存到索引1的數組中,那麼將存儲給定鍵的索引。這樣做會在O(n)時間,儘管這是不允許的。在不使用父指針的情況下在紅黑樹中查找排名
通過CLRS閱讀,Augmenting Data Structures章節的代碼返回給定密鑰的等級。這正是我需要的,但問題是代碼使用父指針。由於我們從未在任何紅黑樹示例中使用父指針,並且此代碼不包含父指針,所以我不相信我們要改變整個給定代碼只是爲了讓等級起作用,這導致我相信有一種方法可以不使用父指針。 (字段?)存在於節點結構中的是:一個key(int),一個指向左側子元素的指針,右側子元素的指針,子樹大小(int)和color(int) 。
所有的代碼都在C中完成。我在尋找的是如果這是可能的,以及我如何在有或沒有源代碼的情況下完成這項工作(一個很好的解釋將是完美的)。