Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使后代在树中达到某个级别?_Java_Swing_Tree - Fatal编程技术网

Java 如何使后代在树中达到某个级别?

Java 如何使后代在树中达到某个级别?,java,swing,tree,Java,Swing,Tree,Java中哪个树数据结构允许查询不同级别的子级?我已经看过TreeNode,JTree。但它们似乎不支持多级查询 给定一个树,对于一个特定的节点,我希望将子代提升到某个级别n。是否有我可以使用的现有实现,或者我应该编写自己的实现 谢谢 如果您不怕复杂的API,DOM可能就是您所需要的。您可以通过XPath查询它,将事件应用到它的节点,等等。编写广度优先遍历并访问指定级别的所有子级并不难。下面是一些伪代码。假设您有一个新类: public class NodeWithLevel { Nod

Java中哪个
数据结构允许查询不同级别的子级?我已经看过
TreeNode
JTree
。但它们似乎不支持多级查询

给定一个
,对于一个特定的节点,我希望将子代提升到某个级别
n
。是否有我可以使用的现有实现,或者我应该编写自己的实现


谢谢

如果您不怕复杂的API,DOM可能就是您所需要的。您可以通过XPath查询它,将事件应用到它的节点,等等。

编写广度优先遍历并访问指定级别的所有子级并不难。下面是一些伪代码。假设您有一个新类:

public class NodeWithLevel {
    Node node;
    int level;
}
此类只是用于此算法的包装器。 然后,“使所有节点达到N级”方法将是:

Queue<NodeWithLevel> queue;
queue.enqueue(<0, tree.root>);    
currentLevel = 0;
while(currentLevel < N) {
    NodeWithLevel current = queue.dequeue();
    currentLevel = current.level;
    // do whatever with current
    for(Node child: current.node.children) {
       queue.enqueue(<current.level + 1, child>);
    }        
}
队列;
queue.enqueue();
currentLevel=0;
while(电流电平
唯一让人想到的是swing的
DefaultTreeModel
,但这仍然需要您进行一些编码,才能让孩子们达到一定的逻辑水平


推出您自己的实现应该不会太难。

支持多个遍历,使用其中任何一个来实现您的目标都留给用户(没有双关语,这是api:)的

嗯。。。不,为什么要将级别硬编码到节点中?这使得它不能在任何其他级别重用,肯定有些东西不适合SwingWhere您在节点中看到任何硬编码吗?我只是使用现有节点和一个level value.hmm为这个算法定义了一个新的数据类型。。你是说你在遍历树的时候创建了一个新的节点来包装实际的节点,只是为了记账?啊。。好吧,我误解了。你可以考虑在这方面澄清你的答案,然后取消我的下注: