读书人

算法导论第十章练习10.4-3非递归方式实

发布时间: 2012-08-17 02:08:34 作者: rapoo

算法导论第十章习题10.4-3非递归方式实现二叉树的中序遍历

非递归方式实现二叉树的中序遍历:迭代方式:

//非递归中序遍历void NonReInOrder(BintreeNode* node){BintreeNode*p=node;stack<BintreeNode*>s;s.push(p);bool flag=0;while(!s.empty()){p=s.top();//flag标志位。如果flag为0则沿着树向下遍历,如果flag为1则沿着树向上遍历if(flag==0){if(p->left==NULL){cout<<p->key<<" ";s.pop();if(p->right==NULL){if(s.empty()){break;}p=s.top();cout<<p->key<<" ";s.pop();flag=1;}else{s.push(p->right);p=s.top();flag=0;}}else{s.push(p->left);flag=0;}}//沿着树向上遍历左孩子if(flag==1){if(p->right==NULL){if(s.empty()){break;}flag=1;p=s.top();cout<<p->key<<" ";s.pop();}s.push(p->right);flag=0;}}cout<<"this is the end!"<<endl;}


读书人网 >编程

热点推荐