二叉树非递归求深度和节点个数
来源:互联网 发布:mysql linux启动 编辑:程序博客网 时间:2024/05/20 07:50
</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的值即为层数。
0 0
- 二叉树非递归求深度和节点个数
- 二叉树的节点个数和深度(非递归)
- 二叉树(7)----求二叉树叶子节点个数,递归和非递归
- 二叉树的前、中、后序遍历(递归和非递归)、层序遍历、深度、叶子节点个数
- 递归--二叉树遍历,求深度,求二叉树节点个数
- 二叉树的遍历,递归和非递归,求深度
- 求二叉树深度 -- 递归和非递归实现
- 求二叉树深度的递归和非递归算法
- 二叉树递归、非递归求深度
- c语言实现二叉树先序,中序,后序(递归),层次遍历,求叶子节点个数及树的深度,下一篇写非递归的遍历
- 二叉树,递归、非递归遍历,求深度,输出叶子节点
- 二叉树非递归求深度
- 非递归求二叉树的深度
- 二叉树----节点个数、高度、递归和非递归遍历、按层遍历
- 二叉树----节点个数、高度、递归和非递归遍历、按层遍历
- 二叉树第K层节点个数 -- 采用递归和非递归方法
- 二叉树第K层叶子节点个数 -- 采用递归和非递归方法实现
- 二叉树(4)----求二叉树深度,递归和非递归
- sort();方法
- leetcode_c++:链表:Convert Sorted List to Binary Search Tree(109)
- jsp-servelt的乱码问题解决
- [ios]iOS开源库学习-SDWebImage
- Codeforces Round #362 (Div. 2) C. Lorenzo Von Matterhorn
- 二叉树非递归求深度和节点个数
- 数字在排序数组中出现的次数 java
- Deep PCA & facerecognition
- jQuery Mobile 安装
- poj-1284 欧拉函数
- strcpy和strncpy用法和区别
- Linux下autoconf和automake使用
- java-基础-变长参数
- rmi高可用的简单实现-zookeeper