java - 获取 TreeMap 中给定节点的所有子节点

标签 java parent-child treemap

我正在使用java 8。我发现有一个对象TreeMap在java中预先实现。 我想知道如何获取某个节点的子节点。

我编写了以下递归代码,但它不起作用。

static TreeMap<String,SimpleNode> tree = new TreeMap<String,SimpleNode>();

public Stack findChildrenToDelete(SimpleNode parentNode){
    Stack nodesToDelete = new Stack();
    nodesToDelete.add(parentNode.getId());
    SimpleNode children=tree.get(keyMaker(parentNode.getId(), parentNode.getType()));


        findChildrenToDelete(children.get(i));

     return  nodesToDelete;  
} 

我的意思是该方法应该提供一堆子节点

我看到了该类的方法,但没有找到直接的解决方案。

最佳答案

不起作用的原因是你没有对递归调用的结果做任何事情。您必须将这些子项附加到结果

static TreeMap<String,ArrayList<SimpleNode>> tree = new TreeMap<String,ArrayList<SimpleNode>>();

public Stack findChildrenToDelete(SimpleNode parentNode){
    Stack nodesToDelete = new Stack();
    nodesToDelete.add(parentNode.getId());
    ArrayList<SimpleNode> children=tree.get(keyMaker(parentNode.getId(), parentNode.getType()));

    for(int i=0;i<children.size();i++){
        // add recursive children to the result
        <b>nodesToDelete.addAll(</b>findChildrenToDelete(children.get(i))<b>)</b>;
    }
    return nodesToDelete;  
}

或者,您可以传递对正在构建的集合的引用,并在递归期间添加到集合中:

static TreeMap<String,ArrayList<SimpleNode>> tree = new TreeMap<String,ArrayList<SimpleNode>>();

public Stack findChildrenToDelete(SimpleNode parentNode){
    <b>return findChildrenToDelete(parentNode,new Stack());</b>
}
public Stack findChildrenToDelete(SimpleNode parentNode<b>, Stack nodesToDelete</b>){
    nodesToDelete.add(parentNode.getId());
    ArrayList<SimpleNode> children=tree.get(keyMaker(parentNode.getId(), parentNode.getType()));

    for(int i=0;i<children.size();i++){
        // pass a reference to the collection recursively
        findChildrenToDelete(children.get(i)<b>,nodesToDelete</b>);
    }
    return nodesToDelete;  
}

关于java - 获取 TreeMap 中给定节点的所有子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43181098/

相关文章:

java - Hazelcast 近缓存驱逐不起作用

android:如何使 subview 与父 View 重叠?

Java 按特定顺序放入树形图

java - 需要一个 Java TreeMap<Integer, Character> 的快速替代品,它可以在不降低速度的情况下容纳许多映射

java - 为什么我的出列方法不适用于我的 treeMap PriceQueue?

JavaFX - 等待用户在元素上单击鼠标

java - 使用 HTTP 请求下载文件的一部分

java - 需要创建一个数组方法,但不确定我是否做对了

html - 无效的 html 标记

c - 有没有办法从c中的基地址获取完整数组?