【发布时间】:2016-08-29 05:48:10
【问题描述】:
我正在尝试打印二叉树的所有根到叶路径,我需要将结果作为字符串列表返回。我正在尝试使用递归和 StringBuilders 来执行此操作,但是对于每个新路径,它不是删除旧路径,而是附加到它。
如果从根到叶的路径是 5->3->2->1、5->3->4、5->7->6 和 5->7->8(我的例子使用),我的结果如下:
5->3->2->1
5->3->2->14
5->3->2->147->6
5->3->2->147->68
这是因为我使用 StringBuilder 的方式,但我无法弄清楚我做错了什么。以下是我的整个代码。任何帮助将不胜感激:
public class solution{
static List<String> allPaths = new ArrayList<String>();
public static List<String> binaryTreePaths (BinaryTree bT){
StringBuilder sb = new StringBuilder();
binaryTreePathsHelper(bT, sb);
return allPaths;
}
public static void binaryTreePathsHelper(BinaryTree bT, StringBuilder sb){
if (bT == null){
return;
}
if (bT.getLeftChild() == null && bT.getRightChild() == null){
sb.append(bT.getRoot() + "");
allPaths.add(sb.toString());
sb = new StringBuilder();
}
else{
sb.append(bT.getRoot() + "->");
}
if (bT.getLeftChild() != null){
binaryTreePathsHelper(bT.getLeftChild(), sb);
}
if (bT.getRightChild() != null){
binaryTreePathsHelper(bT.getRightChild(), sb);
}
}
}
【问题讨论】:
-
我认为你不能用一个字符串来做到这一点。相反,每个递归步骤都会返回一个路径集合。
标签: java binary-tree stringbuilder depth-first-search