前序遍历的迭代器 遍历二叉树: Tree Iterator:前序的实现。 template< class Type〉 void Preorder <Type>:: operator ++( if (s IsEmpty() t if( current = NULL cerr<“ Advanced past end”<endl;exit(1)} current =NULL: return: current=s.Top();s.Pop();//得到当前结点的地址,并进行出栈操作。 if( current ->GetRight ()!= NULL) s Push( current->GetRight()) //非空右儿子进栈。 if( current ->GetLeft()!=NULL s Push( current->GetLeft()) //非空左儿子进栈 template < class Type> void Preorder< Type >: Preorder NLR()t First();/将当前指针 current指向根结点。 hile( e( operator //当前指针 current非空时继续执行。 cout<< operator00)<<endl;//输出当前结点的数据场之值。 operator ++( //使前序次序下的下一个结点成为当前结点。前序遍历的迭代器 • 遍历二叉树:Tree Iterator:前序的实现。 template <class Type> void Preorder <Type> :: operator ++ ( ) { if ( s.IsEmpty() ) { if ( current == NULL ) { cerr << “Advanced past end ” << endl; exit( 1 ) }; current = NULL; return; } current = s.Top( ); s.Pop( ); // 得到当前结点的地址,并进行出栈操作。 if ( current ->GetRight ( ) != NULL ) s.Push( current->GetRight( ) ); //非空右儿子进栈。 if ( current ->GetLeft ( ) != NULL ) s.Push( current->GetLeft( ) ); //非空左儿子进栈。 } template <class Type> void Preorder < Type > :: Preorder_NLR ( ) { First( ); // 将当前指针 current 指向根结点。 while( operator +( ) ) { // 当前指针 current 非空时继续执行。 cout << operator()() << endl; // 输出当前结点的数据场之值。 operator ++( ); // 使前序次序下的下一个结点成为当前结点。 } }