2-3-4樹的分裂核心代碼【JAVA實現】

來源:互聯網
上載者:User

2-3-4樹節點分裂分兩種情況。

1:節點分裂;2:根的分裂。

先要分裂的資料項目設為A,B,C

節點分裂

1.建立一個新的空節點。它是要分裂節點的兄弟,在要分裂節點的右邊。

2.資料項目C轉移到新節點上。

3.資料項目B轉移到要分裂節點的父節點上。

4.資料項目A保留在原來的節點上。

5.最右邊的兩個子節點從要分裂節點處斷開,串連到新節點上。

根的分裂

1.建立新的節點,作為根。它是要分裂節點的父節點。

2建立第二個新的空節點。它是要分裂節點的兄弟,在要分裂節點的右邊。

3資料項目C轉移到新節點上。

4資料項目B轉移到要分裂節點的父節點上。

5資料項目A保留在原來的節點上。

6.最右邊的兩個子節點從要分裂節點處斷開,串連到新節點上。

代碼public void split(Node thisNode) // split the node<br /> {<br /> // assumes node is full<br /> DataItem itemB, itemC; //資料項目B,C<br /> Node parent, child2, child3;//thisNode節點父節點,第3、4個子節點<br /> int itemIndex;</p><p> itemC = thisNode.removeItem(); // 資料項目C從thisNode節點移除<br /> itemB = thisNode.removeItem(); // 資料項目B從thisNode節點移除</p><p> child2 = thisNode.disconnectChild(2); // 節點的第3個子節點從節點中斷開<br /> child3 = thisNode.disconnectChild(3); //節點的第4個子節點從節點中斷開 </p><p> Node newRight = new Node(); // make new node</p><p> if(thisNode==root) // 如果是根節點,建立新的節點,作為根。它是要分裂節點的父節點。<br />{<br /> root = new Node(); // make new root<br /> parent = root; // root is our parent<br /> root.connectChild(0, thisNode); // connect to parent<br /> }<br /> else // this node not the root<br /> parent = thisNode.getParent(); // 得到節點的父節點</p><p> // deal with parent<br /> itemIndex = parent.insertItem(itemB); // 將資料項目B插入父節點,並返回插入的位置<br /> int n = parent.getNumItems(); // 父節點的資料項目總數</p><p>/*<br />*將父節點中子節點移動到合適的位置<br />*/<br /> for(int j=n-1; j>itemIndex; j--) // move parent's<br /> { // connections<br /> Node temp = parent.disconnectChild(j); // one child<br /> parent.connectChild(j+1, temp); // to the right<br /> }<br /> // connect newRight to parent<br /> parent.connectChild(itemIndex+1, newRight);//新節點與父節點相連</p><p> // deal with newRight<br /> newRight.insertItem(itemC); // item C to newRight<br /> newRight.connectChild(0, child2); // connect to 0 and 1<br /> newRight.connectChild(1, child3); // on newRight<br /> } // end split()<br />

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.