二叉树的四种遍历实现
来源:互联网 发布:touch.js解读 编辑:程序博客网 时间:2024/06/10 21:45
二叉树的四种遍历实现
#include<iostream>#include<queue>using namespace std;typedef struct BTNode{ int data; struct BTNode *lchild,*rchild;}BTNode,*BTree;//二叉树节点queue<BTree> q;//声明队列void Create_Tree(BTree *T)//先序创建二叉树,0表示该子树为空树{ int cd; cin>>cd; if(0==cd) *T=NULL; else { *T=new BTNode; (*T)->data=cd; Create_Tree(&(*T)->lchild); Create_Tree(&(*T)->rchild); }}void DLR(BTree T)//先序遍历{ if(T!=NULL) { cout<<T->data<<" "; DLR(T->lchild); DLR(T->rchild); }}void LDR(BTree T)//中序遍历{ if(T!=NULL) { LDR(T->lchild); cout<<T->data<<" "; LDR(T->rchild); }}void LRD(BTree T)//后序遍历{ if(T!=NULL) { LRD(T->lchild); LRD(T->rchild); cout<<T->data<<" "; }}void LevelOrderTraverse(BTree T)//层序遍历{ cout<<T->data<<" "; if(T->lchild) q.push(T->lchild); if(T->rchild) q.push(T->rchild); q.pop(); if(!q.empty()) LevelOrderTraverse(q.front());}int main(){ BTree T; cout<<"先序创建二叉树:"; Create_Tree(&T); cout<<"前序遍历:"; DLR(T); cout<<endl; cout<<"中序遍历:"; LDR(T); cout<<endl; cout<<"后序遍历:"; LRD(T); cout<<endl; cout<<"层序遍历:"; q.push (T); LevelOrderTraverse(q.front()); cout<<endl; return 0;}
程序运行图:
0 0
- 二叉树的四种遍历实现
- 二叉树的四种遍历
- 二叉树的四种遍历
- 二叉树的四种遍历方式
- 二叉树的四种遍历算法
- 二叉树的四种遍历方式
- 二叉树的四种遍历
- C#实现二叉树(三元素式)及二叉树遍历的四种方法
- 二叉树的四种遍历的递归和非递归的实现
- C++实现——二叉树的四种遍历(非递归写法)
- Tree(3)--二叉树的实现及四种遍历(递归/非递归)
- 二叉树的实现及四种常用遍历(python)
- 二叉树的四种遍历方式 (前序,中序,后序,层序遍历 python实现)
- 6-2 二叉树的遍历 (二叉树的四种遍历方法)
- 二叉树遍历的N种实现
- 四:二叉树遍历
- 四种遍历二叉树的方式(递归,非递归)
- 二叉树的四种遍历及叶子.深度
- java位运算
- linux安装软件依赖性问题
- Android开发-UI控件:让AlertDialog在按钮被点击后不消失
- VSFTPD全攻略(/etc/vsftpd/vsftpd.conf文件详解)
- 鼠标拖拽效果
- 二叉树的四种遍历实现
- Android四种启动模式
- 111111111111
- Android开发-UI控件:实现ListView过滤功能,继承于BaseAdapter,非ArrayAdapter。
- 垃圾回收机制GC知识再总结兼谈如何用好GC
- ldap验证用户(java)<不能以simple协议来获取连接进行连接>
- 纯代码搭建首页,不实用storyboard作为window的根视图控制器
- POJ 3190 二分(暴力)
- 运算符优先级-PHP运算符优先级