为二叉树创建路径Arraylist的ArrayList?

时间:2018-04-29 02:01:49

标签: java binary-tree

之前我已经搜索过这个问题,但是看看以前问题的答案似乎对我没什么帮助,而且我不确定如何在二叉树上测试我的功能,因为你可以& #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);      
}

这是正确的方法吗?我在理解如何在二叉树上使用递归时遇到一些麻烦。 另外,我该怎么测试呢?我知道如何创建和添加到二叉树搜索树,但是当涉及二叉树时,我完全迷失了。

感谢您提供任何建议,如果有什么方法可以让我更好地解决这个问题,请告知我们。我还没有问过很多关于堆栈溢出的问题。

0 个答案:

没有答案