java j将字符串遍历_遍历列表以将字符添加到Java中的字符串列表中

这篇博客介绍了一个Java方法,用于遍历树结构并收集所有可能的字符路径成字符串列表。当节点没有子节点时,直接将字符添加到列表。使用递归遍历所有子节点,并将当前节点的值添加到子路径的开头。问题在于内部循环中未正确更新列表,解决方案是遍历并更新列表中的每个元素。
摘要由CSDN通过智能技术生成

我正在尝试创建一种返回字符串的链表的方法.有一棵树,树中的每个节点都存储一个字符.该方法应该找到通过树的所有可能路径.每个路径都会创建一个字符串,并将其添加到列表中.

在第二个for循环中似乎有一个我无法解决的问题.该方法仅返回在第一个if语句中添加的字符.

每个节点都包含变量childList(这是子节点的链接列表)和nodevalue(其是节点存储的字符).

public LinkedList findStrings() {

LinkedList paths = new LinkedList();

//add character to list if there are no children

if (childList.isEmpty()){

paths.add("" + nodevalue);

return paths;

}

//use recursion to add paths from all children to the list

for (TreeNode t : childList){

paths.addAll(t.findStrings());

//add nodevalue to the beginning of all strings in the list

for (String s : paths){

s = nodevalue + s;

}

}

for (String s : paths) System.out.println(s); //for debugging

return paths;

}

解决方法:

在内部循环中更改s时,您只是在重新分配变量s,而不是重新分配存储在链接列表中的值.相反,您应该遍历列表中的所有元素,并逐一更新它们.我认为这样的事情应该起作用:

//use recursion to add paths from all children to the list

for (TreeNode t : childList){

paths.addAll(t.findStrings());

//add nodevalue to the beginning of all strings in the list

int length = paths.size();

for (int i=0; i

paths.offer(nodevalue + paths.poll());

}

}

poll从列表的最前面开始选择第一项,而要约则将结果放在后面.您将第一个项目取下,进行更改,然后将其放置在背面,重复path.size()次,最后以原始顺序得到更新的项目.

标签:foreach,linked-list,java

来源: https://codeday.me/bug/20191031/1977311.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值