avl-tree

    1熱度

    1回答

    我試圖在將新元素插入AVL樹時更新Insert操作。 對insert操作的更新將爲每個節點添加其根樹的大小。 現在,由於我自下而上插入了我的元素,因此如果我爲巡視時通過的每個節點添加+1,那麼在某些情況下,這不起作用,例如,當我需要平衡樹新樹不平衡後,因爲我改變了指針,那麼計算就不正確了。 任何想法或暗示我該怎麼做對了嗎?

    2熱度

    1回答

    我想實現一個AVL樹,似乎與我如何使用我的節點類有問題。我得到錯誤C4430:與第二個getHeight缺少類型說明符我想我指定類型爲子樹的節點? template <typename T> class SetAVL { public: int getHeight() { return getHeight(root); } // Complaining about this

    2熱度

    2回答

    我跑到了我的樹的餘額部分的問題。遞歸插入後調用checkBal。如果我嘗試添加5,2和4,它將檢查2的平衡,並繼續回到5,然後進入rightLeft的rotateLeft部分,這是正確的。但第二行的rotateLeft函數錯誤。 這個實現有什麼問題?我搜遍了全部,並比較了我所做的與人們如何談論它的方式。我終於得到了一切工作。我忘了在最後將N設置爲K. //=====================

    4熱度

    1回答

    我在AVL Tree Wikipedia page注意到以下注釋: 「如果每個節點還記錄其子樹(包括本身和它的後代)的大小,則該節點可以通過指數爲O檢索(log n)的時間作爲好。」 我有谷歌,發現少數地方提accessing by index,但似乎無法找到一個算法會寫的說明。 非常感謝 [更新]謝謝大家。如果發現@templatetypedef與@一個答案結合user448810 links以

    4熱度

    1回答

    我寫了一個python代碼來實現。在編寫代碼時,我完全提到了我的僞代碼。爲了測試我創建的類,我寫了一個測試代碼「app.py」。它從用戶節點的數量和隨機如下生成AVL樹: - from avl import * import random n = input("Enter number of nodes: ") l = random.sample(range(-10000,10001),n

    0熱度

    3回答

    我用C++實現了AVL樹,此刻我將AVL樹打印到控制檯,但我需要使用GUI來表示樹,作爲應用程序的一部分,用戶可以使用該樹來與樹交互。我應該研究哪些庫以實現這一目標? 注:我使用的是OS X

    0熱度

    1回答

    我正嘗試在AVL樹中插入新值。新的插入導致不平衡(根據Wikipedia上的文章,這應該屬於左右情況),因此需要輪換。然而,它是不可能在當前形勢下旋轉,因爲兩個孩子變得比父母更小的結束: 15 / \ 10 27 /\ 8 12 現在,如果我想插入11,結構變得不平衡: 15 / \ 10 27 /\

    3熱度

    1回答

    對不起再次打擾你們,但我有一個問題,我還沒有想出我自己的好幾天。 這是關於一個樹木的旋轉,例如,在正確的位置旋轉樹木。 問題是如何鏈接(或連接)pos->left到pos的原始父親? 我在網上發現了這個代碼,這可行,但我沒看到它是如何解決我的問題的,是因爲使用*&?如果是這樣,你能幫我解釋一下嗎? pos=b的功能是什麼? void Treap::right_rotate(Node *&pos)

    1熱度

    1回答

    我想實現的AVL樹,我有一個很難知道什麼時候我需要一個RR或RL旋轉(同爲LL和LR)確定的。 什麼是每一個先決條件和他們如何不同。我知道我什麼時候看到樹的圖片(直觀地),但是實際情況如何? 這是一個邏輯問題,沒有必要的代碼,謝謝。 我所知道的是它涉及到樹被留下重或右重。但你如何確定?

    0熱度

    1回答

    背景:我將插入大約10億個鍵值對。我需要一個內存中索引,我可以同時對(唯一的,64位整數)鍵的(32位整數)值進行查找。沒有更新,沒有刪除,也沒有遍歷。隨着時間的推移,鑰匙通常會逐漸增加。 什麼樣的索引結構最適合處理這個問題? 我能想到的要求是: 它需要有高效的重新平衡,由於日益增加的鍵 它需要有效地使用存儲器,以適應在RAM中,優選< 28GB 它需要非常有效的查找