非递归前中后序遍历(多种方式)
来源:互联网 发布:小米网络机顶盒看卫视 编辑:程序博客网 时间:2024/05/17 04:15
#include <iostream>#include <stack>using namespace std;struct Node{Node* lchild;Node* rchild;char value;};class list{public:list::list();void PreOrder();void InOrder();void PostOrder();void PostOrder2();private:Node* root;};list::list(){cout<<"请输入您要输入的数字,按#键退出"<<endl;char i;cin>>i;if(i=='#')return;root=new Node;root->value=i;root->lchild=NULL;root->rchild=NULL;Node *p,*q;while(1){cin>>i;if(i=='#')break;p=new Node;p->value=i;p->lchild=NULL;p->rchild=NULL;q=root;while(q){if(p->value<q->value){if(q->lchild)q=q->lchild;else{q->lchild=p;break;}}else{if(q->rchild)q=q->rchild;else{q->rchild=p;break;}}}}}void list::PreOrder(){stack<Node*> s;Node* curr=root;while(1){while(curr){cout<<curr->value<<" ";if(curr->rchild)s.push(curr->rchild);curr=curr->lchild;}if(s.empty())break;curr=s.top();s.pop();}}void list::InOrder(){stack<Node*> s;Node* curr=root;while(1){while(curr){s.push(curr);curr=curr->lchild;}if(s.empty())break;curr=s.top();cout<<curr->value<<" ";s.pop();curr=curr->rchild;}}void list::PostOrder(){ if(!root) return; stack<Node*> s; Node* curr=root; Node* temp=NULL; while(1){ while(curr){ s.push(curr); curr=curr->lchild; } if(s.empty()) break; curr=s.top(); if(curr->rchild==NULL || curr->rchild==temp){ cout<<curr->value<<" "; temp=curr; s.pop(); curr=NULL; } else curr=curr->rchild; }}void list::PostOrder2(){stack<Node*> s;Node *curr=root,*temp=NULL;while(1){while(curr){ s.push(curr);if(curr->rchild)s.push(curr->rchild);curr=curr->lchild;}if(s.empty())break;curr=s.top();if(curr->rchild==NULL || curr->rchild==temp){cout<<curr->value<<" ";temp=curr; s.pop();curr=NULL;}elses.pop();}}void main(){list test;test.PostOrder();system("pause");}
0 0
- 非递归前中后序遍历(多种方式)
- 非递归前中后序遍历(多种方式)
- 二叉树的前中后序遍历,递归和非递归方式
- 非递归前中后序遍历
- 非递归方式遍历所有组合
- 非递归方式遍历ftp文件夹
- 非递归方式遍历本地文件夹
- Java方式实现二叉树的前中后序遍历的递归及非递归算法
- 二叉树三种遍历方式的递归与非递归实现
- 四种遍历二叉树的方式(递归,非递归)
- 二叉树三种遍历方式 递归与非递归实现
- 二叉树三种遍历方式 递归与非递归实现 总结
- 树的几种遍历方式(递归/非递归)
- C语言 二叉树的遍历 递归和(多种)非递归算法
- C语言 二叉树的遍历递归和(多种)非递归算法
- 二叉树的两种遍历方式[递归遍历][非递归遍历]
- Map多种方式遍历
- 二叉树(前中后序递归非递归遍历,层次遍历
- iptables--静态防火墙实例教程
- 青春的迷茫
- UVa 11417 GCD (欧拉φ函数)
- 强制转换(1)dynamic_cast
- Ubuntu操作系统学习笔记之vsftpd的安装
- 非递归前中后序遍历(多种方式)
- 文件彻底删除后怎么恢复
- button的 title 对齐方式
- C++ 中string.find() 函数的用法总结
- Servlet中forward(请求转发)和redirect( 重定向)总结
- 移动端 触摸事件
- 关于android界面设计排版比例
- Keil MDK配置----头文件问题
- Ubuntu操作系统学习笔记之FTP基础