首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-08-17 
算法导论第十章习题10.4-3非递归方式实现二叉树的中序遍历非递归方式实现二叉树的中序遍历:迭代方式://非

算法导论第十章习题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;}


 

热点排行