gpt4 book ai didi

java - 根据计数打印n叉树中的所有路径

转载 作者:行者123 更新时间:2023-12-01 12:18:50 26 4
gpt4 key购买 nike

我有以下n叉树。节点中的值的形式为names {count}。任意节点的计数值为包含该节点的路径数。

enter image description here

我需要打印树中的所有路径(从根到叶),直到该节点的计数变为零。一旦节点的计数为零,则仅打印到其前任的路径(前提是它们的计数大于 0)

上图的 6 条路径是
3-5-1-2-4-6
3-5-1-2
3-5-1-7
3-5-2
3-1-4
3-7

[编辑]尝试了以下操作。使用运行 root.count 次数的循环调用函数 toString(indent,node)。但不知道在路径(3-5-1-2-4-6)没有更多的子路径后如何停止。相反,它会打印 3-5-1-2-4-6-7-2-1-4-7。

public String toString(String indent, MyTree node) {
String output="";
while(node.count>0){
//output = indent + node.toString() + "\n";
output = indent + node.name;
node.count--;
//if(node.count==0) break;
String childsOutput = "";
for (MyTree child : node.childs) {
childsOutput += toString(indent + " ", child);
}
return output + childsOutput;
}
return output;
}

提前致谢。

最佳答案

public  void path_Extraction(Node root)
{

int i=0;

while(root.childs.size()!=0)
{
Node childs=root.childs.get(0);
while(childs.count!=0)
{ ArrayList<Node> path=new ArrayList<Node>();
ArrayList<Node> remove=new ArrayList<Node>();
i++;
extract(childs,path,remove);
paths.put(i,path);
Removing_node.remove.put(i, remove);
}

}
}


public void extract(Node childs,ArrayList<Node> path,ArrayList<Node> remove)
{
if(childs.count>1)
{
if(childs.childs.size()>0)
{
extract(childs.childs.get(0),path,remove);
childs.count--;
if(childs.count==0)
{

childs.parent.childs.remove(childs);
childs.parent=null;
path.add(childs);
remove.add(childs);
}
else
{

path.add(childs);
}

}
}
else
{
if(childs.childs.size()>0)
{
extract(childs.childs.get(0),path,remove);
childs.count--;

childs.parent.childs.remove(childs);
childs.parent=null;
path.add(childs);
remove.add(childs);
}
else
{
(childs.count)--;

childs.parent.childs.remove(childs);
childs.parent=null;
path.add(childs);
remove.add(childs);

}
}
}

请注意它,这会对您有所帮助,因为我之前就这样做了。假设您有一个节点类及其字段:)。祝你有美好的一天。

关于java - 根据计数打印n叉树中的所有路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26829690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com