tree-rotation

    5熱度

    1回答

    在書中算法導論 - 創造性的方法,問題4.24: 設T1和T2是兩個任意的樹,每個都具有n個節點。證明對T1應用至多2n的旋轉是足夠的,以便它等於T2。 對於二叉搜索樹,我想通了一個算法: 查找等於T2的根元素,讓我們把它定位根。 使用AVL旋轉策略,旋轉target-root使其成爲T1的新根。 在此過程中,可能會執行多次旋轉。 對於T1和T2的左子樹,按照上面的方式遞歸處理它們。 對於T1和T

    2熱度

    2回答

    AVL樹似乎有四種轉換:左 - 左,左 - 右,右 - 左和右 - 右。但是,似乎也可能有其他情況。我提出這個爲左均衡: 沒有留下也不是,右旋轉可以平衡這棵樹。用什麼算法來平衡它?

    6熱度

    2回答

    給定一組值,可能有許多不同的可能的二叉搜索樹,可以從這些值形成。例如,對於值1,2,3,有五個BSTS我們可以從這些值使: 1 1 2 3 3 \ \ /\ / / 2 3 1 3 1 2 \ / \ / 3 2 2 1 許多數據結構是基於平衡二叉搜索樹使用tree rotations作爲一種原始的在不破壞所需的二分查找樹不變式的情況下重塑B

    1熱度

    1回答

    我試圖找出在重新平衡完成時紅黑樹中的旋轉。我明白爲什麼輪換髮生,但我不明白它是如何完成的。此外,像LL,RR,LR和RL這樣的中間旋轉是如何完成的,直到結果爲止,並且如果有人告訴我關於何時執行這些旋轉中的任何一個的任何經驗法則,我也會感激。這裏是旋轉: Rr(2) is the case when black node deficiency is in right child of "py" i.

    3熱度

    2回答

    當我在中期研究二叉樹時,發現任何任意的n節點二叉樹可以轉換成任何其他n節點二叉樹,最多2 * n-2個旋轉。有沒有證據呢?我發現了一些有漸近符號的證明,但它並不那麼清楚。我的意思是有人可以解釋/說明它爲什麼是真的?如果它說n節點二叉樹,它是否包含根?

    1熱度

    1回答

    將新元素插入n元素時的最大旋轉次數是多少?元素紅黑樹? 如果我是正確的,插入不違反RBT requries規則最大2旋轉(2例)。假設是這樣,O(1)也是一個正確的答案? 如果是這樣,確認它請告訴我,什麼需要最多3輪?

    0熱度

    1回答

    我試圖實現一個平衡樹,並寫了一個函數,其左旋轉來代替樹: struct BST<'a> { l: Option<&'a BST<'a>>, r: Option<&'a BST<'a>> } impl<'a> BST<'a> { fn left_rotate(self) -> BST<'a> { /* * (x) (y)

    0熱度

    2回答

    我無法理解爲什麼下面的樹輪代碼有效。如果T2指向y.left和y.left指向x,這是不是使最後一個指配x.right = T2等於x.right = x?指針是不是應指向最初的T2? Node leftRotate(Node x) { Node y = x.right; Node T2 = y.left; // Perform rotation y.le

    0熱度

    1回答

    這是序列20,10,5,30,40,57,3,2,4,35,25,18,22,27 我已經嘗試通過使每個新插入的節點作爲根,但它不起作用。 有人可以一步一步給我解釋嗎?