非递归前中后序遍历(多种方式)
来源:互联网 发布:java教程txt下载 编辑:程序博客网 时间:2024/06/05 09:04
#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");}
- 非递归前中后序遍历(多种方式)
- 非递归前中后序遍历(多种方式)
- 二叉树的前中后序遍历,递归和非递归方式
- 非递归前中后序遍历
- 非递归方式遍历所有组合
- 非递归方式遍历ftp文件夹
- 非递归方式遍历本地文件夹
- Java方式实现二叉树的前中后序遍历的递归及非递归算法
- 二叉树三种遍历方式的递归与非递归实现
- 四种遍历二叉树的方式(递归,非递归)
- 二叉树三种遍历方式 递归与非递归实现
- 二叉树三种遍历方式 递归与非递归实现 总结
- 树的几种遍历方式(递归/非递归)
- C语言 二叉树的遍历 递归和(多种)非递归算法
- C语言 二叉树的遍历递归和(多种)非递归算法
- 二叉树的两种遍历方式[递归遍历][非递归遍历]
- Map多种方式遍历
- 二叉树(前中后序递归非递归遍历,层次遍历
- shell中括号使用总结
- 推送技术原理分析及XMPP简单的使用
- 各种引号间的区别
- NSString
- unity体感游戏--openni+kinect+unity3d搭建unity体感游戏
- 非递归前中后序遍历(多种方式)
- linux与window实现共享
- WinDbg 命令集锦
- java.io.NotSerializableException错误解决方法
- expdp query用法
- uC/OS-II 学习笔记之:任务堆栈
- 如何使用 epoll? 一个 C 语言实例
- bss段、data段和text段
- 【练习01】 简单题(1)1003