我试图在

java中创建一个树数据结构,其中每个父节点只能有三个子节点,但在节点至少有一个子节点但少于3个子节点的情况下,我一直坚持在树上添加一个节点.我不确定是否应该使用迭代器来迭代我当前节点的节点列表.我试着使用一个变量,每次调用add()方法时都会递增.

这是我的代码:

节点类:

public class Node {

int keyValue;

int nodeLabel;

ArrayList nodeChildren;

private static int count;

Node(int _keyValue)

{

this.nodeLabel = count;

this.keyValue = _keyValue;

this.count++;

nodeChildren = new ArrayList();

}

public String toString()

{

return "Node " + nodeLabel + " has the key " + keyValue;

}

}

Tree类:add()方法

Node rootNode;

int incrementor = 0;

public void addNode(int nodeKey)

{

Node newNode = new Node(nodeKey);

if (rootNode == null)

{

rootNode = newNode;

}

else if (rootNode.nodeChildren.isEmpty())

{

rootNode.nodeChildren.add(newNode);

}

else if (!rootNode.nodeChildren.isEmpty())

{

Node currentNode = rootNode;

Node parentNode;

incrementor = 0;

while (currentNode.nodeChildren.size() < 3)

{

//currentNode.nodeChildren.add(newNode);

if (currentNode.nodeChildren.size() == 3)

{

parentNode = currentNode.nodeChildren.get(incrementor);

currentNode = parentNode;

currentNode.nodeChildren.get(incrementor).nodeChildren.add(newNode);

}

else

{

parentNode = currentNode;

currentNode = currentNode.nodeChildren.iterator().next();

currentNode.nodeChildren.add(newNode);

}

incrementor = incrementor + 1;

}

System.out.println(rootNode.nodeChildren.size());

}

}

当第三个节点添加到树时,我得到一个IndexOutOfBounds异常

java数据结构创建树_在java中创建树数据结构?相关推荐

  1. java.lang.IllegalArgumentException: 字符[_]在域名中永远无效。 at

    [http-nio-8080-exec-1] org.apache.coyote.AbstractProcessor.parseHost [xxx_tomcat] 是无效主机注意:更多的请求解析错误将 ...

  2. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  3. java 线程组作用_浅析Java中线程组(ThreadGroup类)

    一.概念 Java中使用ThreadGroup类来代表线程组,表示一组线程的集合,可以对一批线程和线程组进行管理.可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线 ...

  4. java xml dom4j 解析_在JAVA中怎么用DOM和DOM4j解析XML啊?

    二.XML文件 三.开始解析 public class JDOMTest { public static void main(String[] args) { // 进行对books.xml文件的JD ...

  5. java try catch嵌套_解析Java中未被捕获的异常以及try语句的嵌套使用

    Java未被捕获的异常 在你学习在程序中处理异常之前,看一看如果你不处理它们会有什么情况发生是很有好处的.下面的小程序包括一个故意导致被零除错误的表达式. class Exc0 { public st ...

  6. java 文件内容排序_在Java中对2个大型文本文件进行排序的最佳方法是什么?

    我正在构建一个简单的 Java应用程序,涉及从csv文件中读取信息. csv文件中的信息以这种形式出现: "ID","Description" "AB ...

  7. java string最大长度_一个Java字符串中到底有多少个字符?

    作者:鸟窝 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 (0),最大值是(65535), 也就是一个字符以2个字节来表示,难道Java最多只能表示 65535个 ...

  8. java 异常处理发生异常_处理Java中的异常

    java 异常处理发生异常 每个程序员都希望编写一个完美的程序. 也就是说,程序运行时没有任何障碍. 好吧,如果希望是马,乞g就会骑. 除了程序员的所有愿望之外,有时还会发生无法预料的情况. 在Jav ...

  9. java web.xml 监听器_【JAVA 核心技术】java web 中的监听器

    为什么要有监听器? 监听器是用来处理一系列事件的java类,可被配置在java web项目中. 既然如此,为什么不用代码直接调用监听器? 这可能是因为J2EE规范规定的项目工程标准,用web.xml指 ...

  10. java osgi web开发_在Tomcat中使用Java Web应用程序的OSGi软件包

    我试图从Java Web应用程序调用OSGi包的方法.两者都应该在Tomcat 7上运行. 我已经写了一个正常的Java应用程序,它调用OSGi软件包中的方法,如本站所述:http://drupal. ...

最新文章

  1. Unicode转义(\uXXXX)的编码和解码
  2. Spring 和 Spring Boot 最核心的 3 大区别,详解!
  3. 【STM32】MDK5打开MDK4项目工程时出现的不兼容及解决方法
  4. Python安装(Windows下安装/Linux下安装)
  5. Windows中EFS加密及解密应用
  6. 防止html标签转义
  7. 17-Docker的数据持久化介绍
  8. vue 指令 v-on 事件修饰符-自定义键盘事件
  9. Leetcode每日一题:222.count-complete-tree-nodes(完全二叉树的节点个数)
  10. Monkey稳定性测试,多少还是要了解一下的(上)
  11. bzoj 3752: Hack 预处理+暴力dfs
  12. [poj2449]Remmarguts' Date(spfa+A*)
  13. Landsat8处理小工具(python)
  14. 油田智能化远程监控系统_油田远程无线监控系统
  15. 无刷直流电机四象限matlab pudn,Matlabmodel 在分析无刷直流电机 BLDC 数学模型的基础上 提出了无刷直 联合开发网 - pudn.com...
  16. YouTube-dl命令报错
  17. 面向削峰填谷的电动汽车多目标优化调度策略
  18. PaddleOCR 图片文字提取
  19. 【WebLogic使用】1.WebLogic的下载与安装
  20. P3755 [CQOI2017]老C的任务

热门文章

  1. 一些与HTML相关名词的简介
  2. monkey测试小结
  3. PHP 读取JSON数据
  4. LA 6047 Perfect Matching 字符串哈希
  5. 灵格斯(lingoes)去广告方法
  6. 用记事本开始写自己的第一个WebService
  7. Flutter根据偏移量转换角度 Offset 的使用实例
  8. java获取C盘下的隐藏目录文件名称
  9. java基础—自定义一个比较器,按照字符串的长度升序的方法来比较字符串进行储存(java集合三)
  10. 过拟合怎么产生的?防治措施?