层次遍历二叉树
2015-09-28 20:11
267 查看
第二种方法——队列 具体步骤是:先将根节点入队列,再读出,删除,再将左右子节点入队列,再将队列的头元素读出并删除,再将头元素的左右子节点入队列,以此类推…… void QueueVisit(BiTreeNode *p) { queue q_first; BiTreeNode *temp; q_first.push(p);//将根节点插入到双向队列的尾部 cout<<"按队列遍历:"<<endl; while(q_first.empty()==false) { temp=q_first.front();//取队首元素 q_first.pop();//删除队首元素 cout<<temp->data<<" "; if(temp->lchild!=NULL) q_first.push(temp->lchild); if(temp->rchild!=NULL) q_first.push(temp->rchild); } cout<<endl; } 第三种方法——容器vector 方法跟第二种是类似的,只是不存在删除头元素,而是将所有的元素都存在容器中,依次读取,读到哪一个节点的时候,便将哪一个节点的左右子节点存入容器中。 void VectorVisit(BiTreeNode *p,int size) { vector vec1; BiTreeNode *temp; int current=0; int end=1; vec1.push_back(p); cout<<"按容器遍历:"<<endl; while(current<szie) { temp=vec1[current]; cout<<temp->data<<" "; if(temp->lchild!=NULL) vec1.push_back(temp->lchild); if(temp->rchild!=NULL) vec1.push_back(temp->rchild); end=vec1.size(); current++; } cout<<endl; }
相关文章推荐
- tomcat源代码之将tomcat7||tomcat8 源代码导入eclipse
- DruidDataSource配置
- 2013蟠桃记
- 深入理解js闭包
- iOS开发-------地图固定位置显示附近微博(MKMapView 地图类)
- (1)ActiveMQ安装配置
- Python - 缩写(capwords) 和 创建转换表(maketrans) 详细说明
- 【NOI2000/codevs1074/tyvj1438】食物链 解题报告
- HTML5响应式布局案例
- android的一些零碎的知识点
- 开博第一篇
- 获取最后插入的id另外方法
- 四则运算
- 数据结构与算法分析(c++版) #12 二叉树
- git 打标签操作
- 【转】QT中QWidget、QDialog及QMainWindow的区别
- http验证CertificateValidation
- cocos2d-x的win32编译环境
- java 读者写者问题
- http协议学习总结