将后序遍历值放在数组列表中



在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,但我的困难是我想返回它,所以我的返回类型将是ArrayList而不是void。问题是,我不知道在基本情况下返回什么:

if (node == null) 
return;

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

在最后的情况下,您可以返回一个空列表,并通过调用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;
}

最新更新