【发布时间】:2017-06-21 07:27:33
【问题描述】:
我有一个类BinarySearchTree,它有两个数据元素Node root 和int size。 Node 类有四个数据元素Node left, right, up 和int data。
我想创建一个迭代器类,它的构造函数接受它将使用的遍历类型。只有在调用next 时,它才会遍历下一个元素。
MyIterator 中应该包含哪些数据元素,以免造成混乱?我在想也许有Stack<Node>,但这感觉是一个非常糟糕的解决方案。有什么聪明的办法可以涵盖所有三种可能的模式吗?有没有什么方法可以做到这一点,而无需在迭代器内部添加额外的数据结构(队列/堆栈/映射)?
public class MyIterator
{
private BinarySearchTree tree;
private Node current;
private int mode;
public MyIterator(BinarySearchTree tree, int mode)
{
// mode = 1 -> IN ORDER TRAVERSAL
// mode = 2 -> PREORDER TRAVERSAL
// mode = 3 -> POSTORDER TRAVERSAL
this.tree = tree;
this.mode = mode;
}
public boolean hasNext()
{
...
}
public void next()
{
...
}
}
【问题讨论】:
标签: java data-structures tree