Java 从给定的HashMap构造树
我想遍历一个Java 从给定的HashMap构造树,java,loops,Java,Loops,我想遍历一个HashMap映射,并从该映射构建一棵树。例如,我有以下映射:1=[2,3],2=[3,4],3=[1,5],4=[2,5],5=[1,4]。我要做的是以以下方式遍历此地图: public static Tree getTree (HashMap<Integer, ArrayList<Integer>> paths) { Tree<Integer> tree = new Tree(-1); Integer node; f
HashMap映射
,并从该映射构建一棵树。例如,我有以下映射:1=[2,3],2=[3,4],3=[1,5],4=[2,5],5=[1,4]。我要做的是以以下方式遍历此地图:
public static Tree getTree (HashMap<Integer, ArrayList<Integer>> paths) {
Tree<Integer> tree = new Tree(-1);
Integer node;
for (int i = 1; i <= paths.size(); i++) {
for (int j = 0; j < paths.get(i).size(); j++) {
node = paths.get(i).get(j);
tree.addLeaf(i, node);
for(int k = 0; k < paths.get(node).size(); k++) {
tree.addLeaf(node, paths.get(node).get(k));
node = paths.get(node).get(k);
// now I have to go to paths.get(node) and receive its ArrayList
for (int t = 0; t < paths.get(node).size(); t++) {
tree.addLeaf(node, paths.get(node).get(t));
node = paths.get(node).get(t);
}
}
}
}
return tree;
}
公共静态树getTree(HashMap路径){
树=新树(-1);
整数节点;
对于(int i=1;i使用递归遍历映射,将当前状态作为参数传递给递归方法:
public void step(Map<Integer, List<Integer>> tree, List<Integer> nodes, Integer key) {
if (nodes.contains(key)) {
// skip node which we already processed
return;
}
nodes.add(key);
List<Integer> children = tree.get(key);
// add sanity checks here if you expect inconsistent data
for (Integer child : children) {
step(tree, nodes, child);
}
}
嗯,我正在努力理解你的最终目标。请详细说明。如果你发布真实的代码来复制它,而不是非编译伪代码,那么理解你的问题会容易得多。
step(map, tempList, 1);