二叉树求深度和宽度,叶子节点数,总结点数
来源:互联网 发布:python实现svm 编辑:程序博客网 时间:2024/05/17 03:46
#include<iostream>//#include<malloc.h> //c malloc和free,C++ new和delete #include<queue>using namespace std;//二叉链表方式,最常用 #define MAXSIZE 100 typedef char ElementType;struct BTNode{ElementType data;BTNode *lchild;BTNode *rchild;};//先序创建二叉树 BTNode * CreateTree(){BTNode * T=new BTNode;//(BTNode *)malloc(sizeof(BTNode))char ch;cin>>ch;//输入 if(ch=='#'){return NULL;}else{T->data=ch;T->lchild=CreateTree();T->rchild=CreateTree();} return T;}//利用后序遍历求二叉树的深度,节点个数int PostTree(BTNode * T){if(!T) return 0;int left,right,depth,nodenum;left=PostTree(T->lchild);right=PostTree(T->rchild);depth=( left>right?left:right )+1; //深度=max(left,right)+1 nodenum=left+right+1;//节点个数=left+right+1 return depth; //return nodenum;求节点数 } //求叶子节点个数 int Leaf(BTNode * T){if(!T) return 0;if( !(T->lchild) && !(T->rchild) ){return 1;}else return ( Leaf(T->lchild)+Leaf(T->rchild) );}//求二叉树的宽度(同一层上的最大节点数),利用队列int MaxNode(BTNode * T){if(!T) return 0; int frontLevelWidth,curLevelWidth,maxLevelWidth;//上层的节点总数,本层的节点总数 ,节点数最大值 queue<BTNode *> que; BTNode * p;que.push(T);//根节点入队frontLevelWidth=1; maxLevelWidth=1;//最少有一个根节点while(!que.empty()){//保证队列不空 while(frontLevelWidth){p=que.front();que.pop();if(p->lchild) que.push(p->lchild);if(p->rchild) que.push(p->rchild);frontLevelWidth--;} curLevelWidth=que.size();if(curLevelWidth>maxLevelWidth) maxLevelWidth=curLevelWidth;frontLevelWidth=curLevelWidth;} return maxLevelWidth;} int main(){//freopen("input.txt","r",stdin);//ABD###CE##F##BTNode * T;T=CreateTree();cout<<PostTree(T)<<endl;cout<<MaxNode(T)<<endl; return 0;}
关于先序建树
1 0
- 二叉树求深度和宽度,叶子节点数,总结点数
- 求二叉树的深度、宽度和叶子结点数
- 求树的总结点数量,叶子节点数
- 二叉树的字符串创建和遍历,求深度,叶子节点数
- 二叉树的深度和叶子节点数
- 数据结构树求深度和叶子节点数
- 【算法导论】求二叉树的叶子数和深度
- 6-4 二叉树求深度和叶子数
- 二叉树求深度和叶子数(20 分)
- PTA二叉树求深度和叶子数
- 求二叉树非叶子节点数
- 二叉树 (Binary Tree)相关题目(求总节点数 叶子节点数 深度 第k层节点数)
- 递归遍历 二叉树 求高度 和 节点数 和 叶子节点数
- 二叉树的创建,遍历,叶节点数,总结点数,深度
- 求二叉数的深度和宽度
- 求二叉数的深度和宽度
- 二叉树的节点数和二叉树的叶子节点书和二叉树的深度
- 二叉树的创建、遍历、深度、叶子节点数
- 字典序全排列
- TensorFlow中RNN网络的实现和关键参数选择
- (一)Voronoi图定义及性质
- 浅析Response对象&&Request对象
- Yeelink初步体验
- 二叉树求深度和宽度,叶子节点数,总结点数
- 模板:排序(二)
- SAP CRM 将组件整合至导航栏中
- Spring深入研究(二)
- Spark HiveThriftServer2启动流程源码分析
- 基于BWDSP的反向传播卷积核求梯度向量化算法
- C++实现矩阵的m次方
- 演练:从用户界面线程中移除工作
- LIS升级版-Deque HDU