【发布时间】:2021-04-15 12:34:57
【问题描述】:
我正在尝试首先将数据保存在 java 中自制的堆栈数据结构对象中。但问题是,当我想返回该堆栈以在另一个可以使用该堆栈的函数中重用时,它会在那里返回一个空堆栈。但是,在上一行中,我打印了所有堆栈元素并且它不是空的。代码如下:
public Stack allLeafNodes(TreeNode root)
{
Stack stack= new Stack();
if (root == null)
return null;
if (root.getLeft() == null &&
root.getRight() == null)
{
stack.push(root.getData());
}
if (root.getLeft() != null)
allLeafNodes(root.getLeft());
if (root.getRight() != null)
allLeafNodes(root.getRight());
else{
stack.print(); // at this call all elements are getting printed
return stack; //but when it returns, the stack is empty
}
return stack;
}
【问题讨论】:
-
在一张纸上画出你的“堆栈”并使用指针(钢笔、铅笔)跟踪执行以指示当前位置并与代码进行比较。 (请注意,您的代码看起来像 树,而不是堆栈。)
-
在修复
print方法后变得相关的另一个注释:您可能忘记将两个allLeafNodes调用的结果添加到您的stack。在当前的实现中,这些结果会被忽略。 -
你需要包含调用
allLeafNodes的代码。