层序(level-order)列出二叉树的节点
2016-04-25 00:22
169 查看
数据结构与算法分析——c语言描述 练习4.35 答案
#include"fatal.h" #include<stdlib.h> #include<queue> using namespace std; typedef int ElementType; struct TreeNode; typedef struct TreeNode *Position; typedef struct TreeNode *SearchTree; struct TreeNode { ElementType element; SearchTree left; SearchTree right; }; SearchTree GenTree(int H, int *lastNodeElem) { if (H >= 0) { SearchTree t = (SearchTree)malloc(sizeof(struct TreeNode)); if (t == NULL) Error("OUT OF MEMORY"); t->left = GenTree(H - 1, lastNodeElem); t->element = ++*lastNodeElem; t->right = GenTree(H - 1, lastNodeElem); return t; } return NULL; } SearchTree makePerfectTree(int H) { int lastElem = 0; return GenTree(H, &lastElem); } void dir_level(queue<pair<SearchTree,int>> nodesToTravel) { int level = -1; while(!nodesToTravel.empty()) { auto treeAndDepth = nodesToTravel.front(); nodesToTravel.pop(); if (treeAndDepth.second > level) { level++; if (level != 0) printf("\n"); printf("level %d:", level); } printf("%d ", treeAndDepth.first->element); if (treeAndDepth.first->left) nodesToTravel.push({ treeAndDepth.first->left,level + 1 }); if (treeAndDepth.first->right) nodesToTravel.push({ treeAndDepth.first->right,level + 1 }); } } int main() { SearchTree t = makePerfectTree(2); queue<pair<SearchTree, int>> nodesToTravel; nodesToTravel.push({ t,0 }); dir_level(nodesToTravel); }
相关文章推荐
- c++第四次作业
- Python进阶语法
- c++实验4—项目6输出星号图
- Linux常用命令(三)
- 2012年清华:玛雅人的密码
- iOS开发系列--视图切换
- vtk总结(2):关于vtk中所要使用到的数据类型
- 对MES(manufacturing execution system)的初印象
- ZOJ 3939 The Lucky Week
- MySQL5.6版本性能调优my.cnf详解
- 高级事件(一)
- Java NIO工作原理
- 基于DDDLite的权限管理OpenAuth.net 1.0版正式发布
- angular translate入门示例
- iOS学习总结之ARC和非ARC的单例模式实现
- shell 笔记
- Haproxy Tornado笔记
- Android 解决setRequestedOrientation之后手机屏幕的旋转不触发onConfigurationChanged方法
- 知道这20个正则表达式,能让你少写1,000行代码
- 从零开始学_JavaScript_系列(13)——CSS<2>(新窗口打开,背景图片填充,底文字,小提示,CSS选择器整理)