我想为我正在实现的二叉树创建pre / in / post / level-order迭代器 . 如果我只想打印整个数据,那么大多数theese只是一个三行递归函数,但我想逐个迭代 .

为了做到这一点,我需要打破我将用于'init'/'getcurrent'/'next'和'valid'函数的任何遍历算法,所以我想我可以存储遍历的状态(数组) / pointer)作为迭代器类的属性 .

对于树的表示,我使用标准(?)方法和节点指针:

template <typename T>
struct Node {
    T info;
    Node* left;
    Node* right;
};

如果需要,它可以包含父指针或任何东西,因此它可以更改 .

那就是我在这方面有多远,只有一些想法,不知道如何启动它 .

此外,我不能使用任何外部库,如队列或堆栈 .