递归算法:
postorder( T )
{
postorder(T.left() );
postorder(T.right() );
visit(T.data() );
}
改写为非递归(改写方法参考博客文章尾调用、尾递归(2016-08-05 15:06)
postorderNR(T)
{
初始化空栈S
初始化输入元素input = T;
定义元素top,用于接收栈顶元素
while( !S.isEmpty() || input)
{
if(input){
S.push(input)
input.pushnum ++; //初始值为0
if(input.pushnum == 1) input = input.left();
if(input.pushnum == 2) input = input.right();
}
else{
top = S.pop();
if(top.pushnum == 1) input = top;
if(top.pushnum == 2) visit(top);
}
}
}