实现非递归前序遍历方法

Implementing a nonrecursive preorder traversal method

我需要实现一个前序遍历方法。遍历节点的二叉树。

我正在尝试找出解决以下问题的方法。 我知道如何实现这样的方法,但问题是我不能偏离老师给我的规则。这使得这项练习变得更加困难。

规则如下:

我希望有人能帮我解决这个问题。

我终于想到了解决办法。

public void preOrderTraverseTreeNonRecursive(){
    Node current = this.root; // Begin bij de root
    Stack<Node> theStack = new Stack<Node>();

    while(!theStack.empty() || current != null){
        if(current != null){
            // only 3 lines of code allowed
            current.visitStap(); // print current Node information
            theStack.push(current); // push current Node on to the stack
            current = current.leftChild; //  set current node to leftChild
        }else{
            // only 2 lines of code allowed
            current = theStack.pop().rightChild; // pop Node from stack and
                                                 // get its rightChild 

        }
    }
}