之前我已经搜索过这个问题,但是看看以前问题的答案似乎对我没什么帮助,而且我不确定如何在二叉树上测试我的功能,因为你可以& #39; t添加到二叉树(我想?)
基本上,对于即将到来的考试的练习示例,我的教授给了我们一个问题,即制作一个arraylist的arraylist,其中包含所有可能到null节点的路径。如果路径包含向左移动,则在数组列表中输入0,如果路径向右移,则输入1.
例如: 在二进制树中打印为:
7
- 1
---- 2
------空
------空
---- 3
------空
------空
- 空
该函数应该产生: [[0,0,0],[0,0,1],[0,1,0],[0,1,1],[1]]。
我所做的代码是:
public ArrayList<ArrayList<Integer>> paths() {
return paths(root);
}
public ArrayList<ArrayList<Integer>> newPath(Node<E> n, ArrayList<Integer> path, ArrayList<ArrayList<Integer>> allPaths) {
Node<E> current = n;
//ArrayList<Integer> path = new ArrayList<Integer>();
if (current != null) {
if (current.left != null) {
path.add(0);
newPath(current.left, path,allPaths);
}
if (current.right != null) {
path.add(1);
newPath(current.right, path, allPaths);
}
}
allPaths.add(path);
return allPaths;
}
public ArrayList<ArrayList<Integer>> paths(Node<E> n) {
ArrayList<ArrayList<Integer>> allPaths = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> path = new ArrayList<Integer>();
return newPath(n, path, allPaths);
}
这是正确的方法吗?我在理解如何在二叉树上使用递归时遇到一些麻烦。 另外,我该怎么测试呢?我知道如何创建和添加到二叉树搜索树,但是当涉及二叉树时,我完全迷失了。
感谢您提供任何建议,如果有什么方法可以让我更好地解决这个问题,请告知我们。我还没有问过很多关于堆栈溢出的问题。