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 ); if ( HasLChild ( *x ) ) S.push ( x->lc ); 0008 } 0009 }