public void split(Node thisNode) // split the node

{

// assumes node is full

DataItem itemB, itemC; //数据项B,C

Node parent, child2, child3;//thisNode节点父节点,第3、4个子节点

int itemIndex;

itemC = thisNode.removeItem(); // 数据项C从thisNode节点移除

itemB = thisNode.removeItem(); // 数据项B从thisNode节点移除

child2 = thisNode.disconnectChild(2); // 节点的第3个子节点从节点中断开

child3 = thisNode.disconnectChild(3); //节点的第4个子节点从节点中断开

Node newRight = new Node(); // make new node

if(thisNode==root) // 如果是根节点,创建新的节点,作为根。它是要分裂节点的父节点。

{

root = new Node(); // make new root

parent = root; // root is our parent

root.connectChild(0, thisNode); // connect to parent

}

else // this node not the root

parent = thisNode.getParent(); // 得到节点的父节点

// deal with parent

itemIndex = parent.insertItem(itemB); // 将数据项B插入父节点,并返回插入的位置

int n = parent.getNumItems(); // 父节点的数据项总数

/*

*将父节点中子节点移动到合适的位置

*/

for(int j=n-1; j>itemIndex; j--) // move parent's

{ // connections

Node temp = parent.disconnectChild(j); // one child

parent.connectChild(j+1, temp); // to the right

}

// connect newRight to parent

parent.connectChild(itemIndex+1, newRight);//新节点与父节点相连

// deal with newRight

newRight.insertItem(itemC); // item C to newRight

newRight.connectChild(0, child2); // connect to 0 and 1

newRight.connectChild(1, child3); // on newRight

} // end split()

java实现2-3树_2-3-4树的分裂核心代码【JAVA实现】 | 学步园相关推荐

  1. java中jdbc查询有返回值_使用JdbcTemplate查询方法的返回值 | 学步园

    使用JdbcTemplate进行查询时,可以使用queryForXXX()等方法 1   jdbcTemplate.queryForInt() 和 jdbcTemplate.queryForLong( ...

  2. java jpg转换tif_JAVA 实现jpg/tif/bmp 等图片之间格式得互相转换 | 学步园

    tif 图片的转换 tif图片无法在浏览器中预览 下载 java处理图片的 JAI 包(http://download.csdn.net/detail/guoxuepeng123/5258630) i ...

  3. java维吉尼亚密码_java实现维吉尼亚加密/解密算法 | 学步园

    加密算法程序: public class mtoc { //输入明文和密钥,用输入的密钥对明文进行加密 public static void main(String[] args) {int i; c ...

  4. java 点餐界面_Java小项目点餐系统(二)之服务端 | 学步园

    服务端详解: 服务端的主要功能就是无限监听一个端口号,对客户端发来的连接请求给予回应,然后开辟新线程处理客户端.界面做的比较简单就是显示在线的用户,分为商家和学生. 一.监听客户端的socket连接请 ...

  5. java实现c#的datetime.ticks_java的Date.getTime()转换成C#的Datetime.ticks | 学步园

    先来个名词解释: Epoch time:指从1970年1月1日零时起到现在为止的"second(秒) 数". 注意我给"second(秒) 数"加了引号,是因为 ...

  6. java调c++代码_Java中调用C++代码的实现 | 学步园

    JNI为  Java Native Interface 即Java本地接口,使用此种方式可以对C/C++代码进行调用,其在本质上是对C/C++生成的动态库进行调用而不是直接对C/C++代码进行调用 J ...

  7. java 命令行读取_Java:从控制台(console,命令行)读取字符 | 学步园

    /** * 从控制台(console,命令行)读取字符:InputStreamReader(System.in) */ import java.io.IOException; import java. ...

  8. java中的pane,Java中scroll pane的使用(一)– 动态改变其client的大小 | 学步园

    动态改变scroll pane的client的大小,并达到其滚动条出现当client超出我们设定的view port大小时. package com.han; import java.awt.Bord ...

  9. java excel公式计算_java poi读取excel公式,返回计算值(转) | 学步园

    http://blog.csdn.net/CYZERO/article/details/6573015 经测试,确实可以 1 package hrds.zpf.poi; 2 3  import org ...

最新文章

  1. 【复盘】小朋友的奇思妙想
  2. HTML的标签描述18
  3. 极兔收购百世快递,谁是赢家?
  4. C语言sprintf与sscanf函数
  5. linux mysql8配置文件_Linux下 MySQL8安装教程
  6. Iterator作用
  7. MVC View 中 html 属性名与关键字冲突问题的分析与解决
  8. html推箱子怎么清除走过的,第九讲:HTML5该canvas推箱子原型实现
  9. 爱快助力元气森林随时随地高效办公
  10. ROLAP、MOLAP和HOLAP联机分析处理区别
  11. [LintCode] 最长上升子序列
  12. 第十三周项目1-数组大折腾(一)
  13. Leetcode 刷题笔记(二十四) ——动态规划篇之背包问题:01背包
  14. cuda和cudnn下载地址
  15. 空洞卷积的超详细解释
  16. 程序员版--致青春(一)——facejoking刷票工具(谈刷票原理)
  17. 只有一个源视频的Deepfakes简介
  18. 基于CNN卷积神经网络的商品识别(毕设)
  19. Python tkinter的简单使用,在绘布上播放GIF和图片
  20. ISCC 2022 部分

热门文章

  1. 41岁,她破格提拔为高校副校长
  2. 支付宝的架构到底有多牛逼?还没看完我就跪了!
  3. 数学 :追求真和美的学问
  4. 李学勤:功利化是现在教育的最大问题
  5. 科学的分析猪八戒到底是什么猪,黑猪还是白猪?
  6. 有了数学基础,如何进阶AI?
  7. python五子棋游戏15*15_在STM32上运行五子棋小游戏(15x15)
  8. C字节对齐与C++类对象内存布局
  9. 【转载】LinkedHashMap和HashMap区别
  10. 【开发者成长】每个人都在编写草率代码