red-black-tree

    1熱度

    1回答

    在這個代碼摘錄請看: while(*it <= *it_end and it != myset.end()) if(foo(*it++)) return true; it和it_end是的std ::設置(的RB樹)的有效迭代器。 foo要麼: 刪除it,並與*it相同的值再次插入一個元素,returing假; 刪除it並返回true。 我的問題: 它是安全運行這個循環?

    0熱度

    2回答

    private static int computeRedLevel(int sz) { int level = 0; for (int m = sz - 1; m >= 0; m = m/2 - 1) level++; return level; } 我不明白這個算法是如何計算紅色水平的?有人可以解釋嗎?

    0熱度

    1回答

    我在我最後的評論表上有一個問題說。證明n> 1,紅黑樹必須至少有1個紅色節點。這對我很有意義,因爲如果n是偶數,則根中的2個子樹的節點數不同,因此必須至少有一個紅色才能保持所有路徑具有相同的黑色高度。那麼還有另外一個問題,就是說黑色高度爲k的樹的最小內部節點是2^k-1。證明這一點的是,如果每個節點都是黑色的,那麼完整的二叉樹(假設虛擬外部葉子被計數)將具有高度k,並且將其插入公式2^h-1給出我

    1熱度

    3回答

    我知道如何用n個插入(每個都有O(log(n))效率) (n * log(n))整體 ,我也知道2-3-4樹的等價結構也可以用排序後的數組構造線性時間。 任何人都可以提供關於紅黑版本的簡單解釋嗎?

    0熱度

    1回答

    我試圖在學習它之後實現紅黑樹,但打印紅黑樹時出錯。你能否看看並提出實施紅黑樹插入是否存在任何問題。 它顯示只有root和它的第一左,右孩子遞歸,然後顯示以下錯誤: Exception in thread "main" java.lang.StackOverflowError at java.io.FileOutputStream.write(FileOutputStream.java:326)

    2熱度

    2回答

    我在某處讀取此語句時,可以將任何AVL樹T的節點着色爲「紅色」和「黑色」,以便T變成紅黑樹。 這個說法似乎很有說服力,但我不明白如何正式證明這一說法。 根據維基,A紅黑樹應該滿足這五個屬性: A.A節點是紅色或黑色。 b。根部是黑色的。這條規則有時會被忽略。由於根始終可以從紅色變爲黑色,但不一定相反, c。所有葉子(NIL)都是黑色的。 d。如果一個節點是紅色的,那麼它的兩個孩子都是黑色的。 e。

    0熱度

    1回答

    我正在研究一個家庭作業問題,要求我們查找紅黑樹的內部路徑長度。這是迄今爲止我已經實現的代碼。 int Tree::internalpathlength(BinTree* root_node, int curr_level){ int ipl; if(root_node == NULL){ return 0; } else if(root_node->colour == BLACK

    3熱度

    1回答

    紅父節點有可能只有一個黑子節點嗎?我一直在玩紅/黑樹模擬器在線,我無法設法得到這種情況發生。 背後問這個的原因是我相信我有一個不必要的,如果在我的代碼... if (temp_node->color == BLACK && node->color == RED) { node->color = BLACK; global_violation = false; } 感謝您

    -1熱度

    2回答

    有兩個整數x和7是隨機生成的整數。該程序使用紅黑樹成員函數插入將新值插入樹中。 我不明白插入函數的參數,更具體的使用 (void*)x and (void*y) 下面是主要 rbt.rbtree_insert(t, (void*)x, (void*)y, compare_int); 這裏的函數調用的已定義 void RBTree::rbtree_insert(rbtree t, void*

    -1熱度

    2回答

    我已經在C中實現了一個紅黑樹。在C++映射中,可以提供一個自定義比較,它只執行操作值1 < value2。該操作返回true或false,但如何在沒有比較操作的情況下實現樹?我想讓我的比較函數只返回1或0而沒有任何==運算符。我試圖在stl中讀取它,但是代碼是不可讀的,儘管我有C++的經驗。 完整的代碼不是必須的,因爲它與其他樹實現的代碼相同。目前有以下比較功能: int cmp(void *ke