Java树节点while语句

Java树节点while语句,java,if-statement,while-loop,jtree,treenode,Java,If Statement,While Loop,Jtree,Treenode,我正在为java树节点编写代码。我想做一个while语句,从树的根循环到所有后续节点并更新编号。我可以用if语句来实现这一点,但它只循环通过第一个节点并在那里结束 if (node.getChildCount() > 0) { updatenumbers(node); } 我尝试了这个while语句,但这会导致程序突然停止,并且不会更新树,也不会引发错误或异常。我不确定是什么问题 while (node.getChildCo

我正在为java树节点编写代码。我想做一个while语句,从树的根循环到所有后续节点并更新编号。我可以用if语句来实现这一点,但它只循环通过第一个节点并在那里结束

    if
    (node.getChildCount() > 0)
    {
        updatenumbers(node);
    }
我尝试了这个while语句,但这会导致程序突然停止,并且不会更新树,也不会引发错误或异常。我不确定是什么问题

    while
    (node.getChildCount() > 0)
    {
        updatenumbers( 0, node);
    }
这是updatenumbers的代码

 private void updatenumbers(int _index, MutableTreeNode _node) {
    int count = _node.getChildCount;
    for (int i = _index; i < count ; i++){
        node.setindex(i);
    }
private void updatenumbers(int _索引,可变树节点){
int count=\u node.getChildCount;
for(int i=_index;i
我建议采用以下机制

1) 用函数替换while循环

2) 将节点初始化为根元素。使用已初始化的节点调用函数

3) 在函数内部,使用getChildCount()作为基本条件

4) 通过左、右子级递归


假设它是一个二叉树,假设您有根节点:

MutableTreeNode rootNode = //whatever
然后,您可以使用
ArrayList
作为类似队列的对象,在
树上循环时执行

ArrayList<MutableTreeNode> queue = new ArrayList<MutableTreeNode>();
queue.add(rootNode)
while(queue.size() > 0){
    MutableTreeNode tempNode = queue.get(0);//access first element only
    updatenumbers(tempNode);  //update children of just this single node
    queue.remove(0);//remove from queue

    //now add the children of tempNode
    queue.add(tempNode.left);
    queue.add(tempNode.right);
}
更新:由于刚刚透露您正在使用的是
JTree
的以下两个来源可能会有所帮助:


我们不知道你的TreeNode是什么样子,也不知道updatenumbers是做什么的。请发布所有相关的代码。你在哪里遍历子节点?@RJadhav你是什么意思?我的意思是你只在while循环中的一个节点上运行,它是否指向子节点?@Eran我更新了这个问题,我觉得不需要它因为代码的那部分很大,这正是我想要的。正如我所说的,if语句可以工作,但只循环通过第一个子节点,而不会继续到子节点的子节点……如果你得到了meThanks,这就是我想要实现的!
private void updatenumbers(MutableTreeNode node) {
    int count = node.getChildCount;
    for (int i = 0; i < count ; i++){
        node.getChild(i).setindex(i);//you need a getChild method or something similar
}