java—将后序遍历值放入arraylist中

c6ubokkw  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(275)

在web上有打印值的解决方案,如下所示:

void printPostorder(Node node) 
{ 
    if (node == null) 
        return; 

    // first recur on left subtree 
    printPostorder(node.left); 

    // then recur on right subtree 
    printPostorder(node.right); 

    // now deal with the node 
    System.out.print(node.key + " "); 
}

但我的问题是,我不想打印这些值,而是将它们放在一个 ArrayList . 那部分很容易我试过用 ArrayList.add 而不是 System.out.print ,但我的挣扎是,我想回报它,而不是 void 我的回报类型是 ArrayList . 问题是我不知道在基本情况下返回什么:

if (node == null) 
        return;

我的方法确实返回 ArrayList 那么,对于上面的基本情况,我能返回什么呢?

kuarbcqp

kuarbcqp1#

最后,您可以返回一个空列表,并通过调用 addAll :

List<Node> getPostOrderList(Node node) { 
    List<Node> retVale = new ArrayList<>();
    if (node == null) {
        return retVal; 
    }

    // first recur on left subtree 
    retVal.addAll(getPostOrderList(node.left));

    // then recur on right subtree 
    retVal.addAll(getPostOrderList(node.right));

    // now deal with the node 
    retVal.add(node);

    return retVal;
}

相关问题