从父级获取到子项的路径



我有一份孩子名单和一份家长名单。我还有一张childeId-parentId的地图。父母可以有 n 个孩子,但孩子有一个直系父母。我想从 Java 中的父级获取每个孩子的路径。如何递归地执行此操作?

我有以下组:[Root, abc, asd, xyz, 123, xyz2]

父子映射: {Root=abc, Root=asd, Root=xyz, Root=123, xyz=xyz2}

我想将每个孩子的路径获取为:{Root/abc, Root/asd, Root/xyz, Root/123, Root/xyz/xyz2}

我有一张地图:

final<String, Groups> groupMap = Service.getListOfGroups(service);

这给了我所有必需的值。我正在遍历地图以获取每个条目。

public Map<String, Groups> takeGroups(Service servie ) {
final<String, Groups> groupMap = new HashMap<>();
for(Groups gp: service.getGroups()){
groupMap.put(gp.getGroupId, gp)
}
for(Groups gp: groupMap.values()){
   gp.setChildren(new ArrayList<>());
   String group = gp.getGroupValue();
   String parentId = gp.getParent();
   Groups parentGroup = groupMap.get(parentId);
   List<GroupSummary> childs = parent.getChildren();
   if(childs == null){
      childs = new ArrayList<>();
   }
   childs.add(gd);
 } 
 return groupMap;
}

我想我可以通过将所有这些值添加到 n 元树然后遍历 n 元树来解决这个问题。我以前从未使用过树,不确定如何从中创建 n-ary-tree 并获得所有组所需的路径。真的很感谢任何帮助。

这样的事情应该可以做到。 请注意,我没有尝试编译它,因此几乎可以肯定它存在语法错误。 但它应该有助于让你了解你必须做什么。

public List<Node> getPath( Node node, Map<Node,Node> childToParentMap )
{
    List<Node> path = new ArrayList<>();
    return fillPath( node, path );
}
private void fillPath( Node node, Map<Node,Node> childToParentMap, List<Node> path )
{
    Node parent = childToParentMap.get( node );
    if( parent != null )
        fillPath( parent, childToParentMap, path );
    path.add( node );
}

相关内容

  • 没有找到相关文章

最新更新