二叉树的遍历
来源:互联网 发布:看外汇牌价的软件 编辑:程序博客网 时间:2024/05/16 20:22
递归与非递归
#include <iostream>#include <stack> using namespace std;typedef struct BiNode{int num;struct BiNode *lchild,*rchild;}BiNode,*BiTree;int createTree(BiTree &T)//先序构造二叉树 {int data;cin>>data;if(data==0){T=NULL;}else{T=(BiTree)malloc(sizeof(BiNode));T->num=data;createTree(T->lchild);createTree(T->rchild);}return 0;}void printTree(BiTree &T)//打印节点 {if(T!=NULL)cout<<T->num<<" ";}int preOrder(BiTree &T)//递归先序遍历 {if(T!=NULL){printTree(T);preOrder(T->lchild);preOrder(T->rchild);}return 0;}int inOrder(BiTree &T)//递归中序遍历 {if(T!=NULL){ inOrder(T->lchild);printTree(T);inOrder(T->rchild);}return 0;}int postOrder(BiTree &T)//递归后续遍历 {if(T!=NULL){ postOrder(T->lchild);postOrder(T->rchild);printTree(T);}return 0;}int preOrder2(BiTree &T)//非递归先序 {stack<BiTree> sta;BiTree p = T;while(p||!sta.empty()){if(p!=NULL){sta.push(p);cout<<p->num<<" ";p=p->lchild; }else{p = sta.top();sta.pop();p = p->rchild; } } return 0;}int inOrder2(BiTree &T)//非递归中序 {stack<BiTree> sta;BiTree p = T;while(p||!sta.empty()){if(p!=NULL){sta.push(p);p=p->lchild; }else{p = sta.top();cout<<p->num<<" ";sta.pop();p = p->rchild; } } return 0;}int postOrder2(BiTree T)//非递归后序遍历 {stack<BiTree> sta;BiTree p =T, r=NULL,temp;while(p||!sta.empty()){if(p){sta.push(p);p=p->lchild;}else{p= sta.top();if(p->rchild&&p->rchild!=r){p = p->rchild;sta.push(p);p=p->lchild;}else{p=sta.top();sta.pop();cout<<p->num<<" ";r=p;p=NULL;}}}return 0;}int main(){BiTree T;//指针 cout<<"create a tree: ";createTree(T);cout<<"recursive preOrder: ";preOrder(T);cout<<endl;cout<<"recursive inOrder: ";inOrder(T);cout<<endl;cout<<"recursive postOrder: ";postOrder(T);cout<<endl;cout<<"non-recursive postOrder2: ";preOrder2(T);cout<<endl;cout<<"non-recursive inOrder2: ";inOrder2(T);cout<<endl;cout<<"non-recursive postOrder2: ";postOrder2(T);cout<<endl;}
阅读全文
0 0
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- get url 拼接 中文 汉字乱码问题解决方案
- MySQL函数大全
- HDU 6208 The Dominator of Strings (字符串find函数暴力过)
- JAVA-abstract关键字
- 已解决:Ubuntu安装sogou输入法后出现两个图标和输入框
- 二叉树的遍历
- 网络爬虫是什么
- grep 全词匹配和模糊匹配
- imageloader的使用
- UTF-8与UTF-8(无bom)的区别
- Eclipse里添加JS插件 以便提示
- 架构与内核
- LayoutInflater.inflate方法加载View
- Java基础