logo设计竞标网站,网站建设项目特色,郑州妇科医院哪家好知乎,投标网站怎么做//这不是最有效的方法#xff0c;但使用了标记为容易理解#xff0c;记下 /*
* description:树的遍历示例#xff0c;非递归版本
* 入栈顺序#xff1a;
* 前序#xff1a; 右子树 - 左子树 - 当前节点
* 中序#xff1… //这不是最有效的方法但使用了标记为容易理解记下 /*
* description:树的遍历示例非递归版本
* 入栈顺序
* 前序 右子树 - 左子树 - 当前节点
* 中序 右子树 - 当前节点 - 左子树
* 后序 当前节点 - 右子树 - 左子树
*
* writeby: nick
* date: 2012-10-22 23:56
*/
#include iostream
#include stackusing namespace std;struct node
{int item;bool flag;node *l, *r;node(int n){itemn; l0; r0; flagfalse;}
};
typedef node *link;//前序遍历
void pretraverse(link h, void visit(link))
{stacklink s;s.push(h);while(!s.empty()){h s.top();s.pop();visit( h );if (h-r ! 0) s.push(h-r);if (h-l ! 0) s.push(h-l);}
}//中序遍历
void midtraverse(link h, void visit(link))
{stacklink s;s.push(h);while(!s.empty()){h s.top();s.pop();if(h-flag true) {visit(h); continue;}if(h-r ! 0 h-r-flag false) s.push(h-r);if(h-flagfalse){ h-flagtrue; s.push(h);}if(h-l ! 0 h-l-flag false) s.push(h-l);}}//后序遍历
void posttraverse(link h, void visit(link))
{stacklink s;s.push(h);while(!s.empty()){h s.top();s.pop();if(h-flag true) {visit(h); continue;}if(h-flagfalse){ h-flagtrue; s.push(h);}if(h-r ! 0 h-r-flag false) s.push(h-r);if(h-l ! 0 h-l-flag false) s.push(h-l);}
}void visit(link p)
{cout p-item ;
}int main()
{link root new node(4);root-l new node(5);root-r new node(6);root-l-l new node(7);root-l-r new node(8);cout 先序遍历;pretraverse(root, visit);cout endl 中序遍历;midtraverse(root, visit);root-flag false;root-l-flag false;root-r-flag false;root-l-l-flag false;root-l-r-flag false;cout endl 后序遍历;posttraverse(root, visit);return 0;
} 转载于:https://www.cnblogs.com/wouldguan/archive/2012/10/23/2735511.html