二叉树的遍历
来源:互联网 发布:mmd exo 动作数据 编辑:程序博客网 时间:2024/04/26 09:19
#include<iostream>#include<stack>#include<queue>const int maxsize=100;int index;//初始化树时的索引编号using namespace std;typedef char ElemType;typedef struct BiNode{ ElemType data; struct BiNode *lchild,*rchild;}BiNode,*BiTree;int CreateBiTree(BiTree &T,ElemType* pre){ index++; if(pre[index]=='*') T=NULL; else{ T=new BiNode; T->data=pre[index]; CreateBiTree(T->lchild,pre); CreateBiTree(T->rchild,pre); } return 1;}void visit(BiTree T){ cout<<T->data<<" ";}void PreOrder(BiTree T){ if(T){ visit(T); PreOrder(T->lchild); PreOrder(T->rchild); }}void InOrder(BiTree T){ if(T){ InOrder(T->lchild); visit(T); InOrder(T->rchild); }}void PostOrder(BiTree T){ if(T){ PostOrder(T->lchild); PostOrder(T->rchild); visit(T); }}void InitBiTree(BiTree &T){//采用的是先跟插入到树里面,所有的空指针都要加上'*' index=-1; ElemType a[maxsize]={"abc**d**e**"}; CreateBiTree(T,a); cout<<"the preorder of tree is: "; PreOrder(T); cout<<endl;}void InOrderLoop(BiTree T){//中序遍历循环策略 cout<<"the InorderLoop of tree is: "; stack<BiTree> s; BiTree p=T; while(p||!s.empty()){ if(p){ s.push(p); p=p->lchild; } else{ p=s.top(); s.pop(); visit(p); p=p->rchild; } } cout<<endl;}void LevelOrder(BiTree T){ //层序遍历遍历二叉树 cout<<"the Levelorder of tree is: "; queue<BiTree> q; BiTree p=T; q.push(p); while(!q.empty()){ p=q.front(); q.pop(); visit(p); if(p->lchild){ q.push(p->lchild); } if(p->rchild){ q.push(p->rchild); } } cout<<endl; }int main(){ BiTree T; InitBiTree(T); InOrderLoop(T); LevelOrder(T); system("pause"); return 0;}
为了简单化,栈和队列没有写,直接用的。本想把那个循环遍历的先序和后序写了,奈何能力有限,拿着那个中序循环遍历的程序翻过来覆过去还是没有写出来,遍历的乱七八糟的。谁如果有比较好的循环遍历的先序和后序代码,给贴一个,谢谢了。看着别人写的代码都挺好的,临着自己去写就犯二了,我还是低着头慢慢爬吧。。。
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- c++中的高度级别
- Template Method 模式
- Ubuntu下 Android真机调试
- Windows XP添加Emacs到右键菜单
- oracle sql语句小结
- 二叉树的遍历
- PKCS cer 证书
- sql 2005的日期函数
- LINQ中如何使用SQL中NOT IN
- Eclipse的版本和语言包的使用问题
- linux SIGNAL 详解
- PHP正则匹配汉字、字母、数字和下划线,不含特殊字符
- 向下类型转换
- 红富士 苹果再涨30 库存锐减