我对该集合的实现如下:
private void init(Node<K, E> root) {
Node<K,E> node = root;
while (node != null) {
stack.push(node);
node = node.getLeft();
}
}
然而,当它被调用和使用时,似乎堆栈中没有任何内容。我已经尝试过无穷无尽的调试,对我实现上述组件的方式可能出现什么问题有任何建议吗?
答案 0 :(得分:3)
您已使Stack
不可变。当您调用push()
方法时,它实际上并不会将节点推送到堆栈,它会返回一个新的不可变Stack
,并将该元素推送到它。在调用push
和pop
等所有修改方法时,在行上添加stack =
以将新返回的堆栈分配回stack
。
E.g。取代
stack.push(node);
与
stack = stack.push(node);