#include <iostream>
using namespace std;
# define maxSize 10
typedef struct BTNode{ int data; struct BTNode * lchild; struct BTNode * rchild;
} BTNode; void createBTree ( BTNode * & p)
{ p = ( BTNode* ) malloc ( sizeof ( BTNode) ) ; p- > data = 1 ; BTNode * n2, * n3, * n4, * n5 ; n2 = ( BTNode* ) malloc ( sizeof ( BTNode) ) ; n3 = ( BTNode* ) malloc ( sizeof ( BTNode) ) ; n4 = ( BTNode* ) malloc ( sizeof ( BTNode) ) ; n5 = ( BTNode* ) malloc ( sizeof ( BTNode) ) ; n2- > data = 2 ; n3- > data = 4 ; n4- > data = 3 ; n5- > data = 5 ; p- > lchild = n2; p- > rchild = n3; n2- > lchild = n4; n2- > rchild = n5; n3- > lchild = n3- > rchild = NULL ; n4- > lchild = n4- > rchild = NULL ; n5- > lchild = n5- > rchild = NULL ;
}
void preorderNonrecursion ( BTNode * p) { if ( p != NULL ) { BTNode * q; BTNode * stack[ maxSize] ; int top = - 1 ; stack[ ++ top] = p; while ( top != - 1 ) { q = stack[ top-- ] ; cout << q- > data << endl; if ( q- > rchild != NULL ) { stack[ ++ top] = q- > rchild; } if ( q- > lchild != NULL ) { stack[ ++ top] = q- > lchild; } } }
} int main ( )
{ BTNode * p; createBTree ( p) ; preorderNonrecursion ( p) ; return 0 ;
}