0001 template <typename T, typename VST> //元素类型、操作器 0002 void travPre_I1( BinNodePosi<T> x, VST& visit ) { //二叉树先序遍历算法(迭代版#1) 0003 Stack<BinNodePosi<T>> S; //辅助栈 0004 if ( x ) S.push( x ); //根节点入栈 0005 while ( !S.empty() ) { //在栈变空之前反复循环 0006 x = S.pop(); visit( x->data ); //弹出并访问当前节点,其非空孩子的入栈次序为先右后左 0007 if ( HasRChild( *x ) ) S.push( x->rc ); 0008 if ( HasLChild( *x ) ) S.push( x->lc ); 0009 } 0010 }