二叉树非递归求深度和节点个数
2016-07-17 16:10
267 查看
</pre><pre name="code" class="cpp">int num = 1; void levelPrint(NODE *t) { int size=1; int deep = 0; NODE * queue[20]; int front = -1,rear=0; queue[0] = t; NODE *p = t; while (front != rear) { while (size > 0) { front++; cout << queue[front]->data << ' '; if (queue[front]->lchild != NULL) { queue[++rear] = queue[front]->lchild; num++; } if (queue[front]->rchild != NULL) { num++; queue[++rear] = queue[front]->rchild; } size--; } if (size == 0) { size = rear - front;//size记录了每一层有几个节点 deep++; } } cout << "\n深度: " << deep; cout <<"\n 节点个数: "<< num; }
上述代码是根据按层遍历修改
首先说节点个数:
首先给它赋值为1,是根节点,后面只要说左子节点或右子节点不为空,就给它加上1,这样最后num的值即为二叉树节点的值。
深度:
本身这段代码就是按层遍历,我就想能不能把每一层记录下来呢?首先还是一样,deep为1,表示的是根节点那一层,然后设置一个变量size,来表示每一层的节点个数,
这样的话,然后每查找一个节点,size减一,最后size为0时,说明一层遍历完了,我们给deep加一。整体结束后deep的值即为层数。
相关文章推荐
- 冒泡排序
- 【linux c】什么是野指针以及如何避免野指针_学习笔记_010
- Android自定义捕获Application全局异常
- 踩水
- 【转载】.NET/C#-uploadify视频文件or大文件上传
- IntelliJ IDEA Maven 安装配置
- 设计模式---结构类型---装饰
- 参考韩顺平老师的视频,用HTML写一个静态网页的邮箱
- addWidget的参数说明
- 【NOIP2016提高A组模拟7.17】锦标赛
- 天热无聊,用C语言函数指针实现的小函数^_^
- Eclipse之安装及汉化步骤
- Android开发——获取应用数据/缓存大小并清理缓存
- 内存按字节编址,地址区间为[90000H,CFFFFH],若用32K*8bit的存储器芯片构成该内存,需要__块
- C++ read函数读入int整形数据
- Android开发——获取应用数据/缓存大小并清理缓存
- SortedMap接口源码解析
- maven打包可执行jar的方法
- 【Java源码分析】HashMap源码分析
- poj-1006 中国剩余定理