【剑指offer】二叉树的深度
来源:互联网 发布:剑三成男免费捏脸数据 编辑:程序博客网 时间:2024/06/17 14:58
题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
方法一分析:主要思想就是层序遍历,就是有遍历上一层的每一个节点,得到下一层的所有节点,再有下一层的节点得到下下层的所有节点,直到下层的节点个数为0时结束。
int TreeDepth(TreeNode* pRoot) { if(!pRoot) return 0; vector<TreeNode *> temp; //保存上一层的节点; temp.push_back(pRoot); int k=1,het=1; while(!temp.empty()){ int count=0; while(k--){ //上一层有k个节点,就循环k次; if(temp[0]->left) {temp.push_back(temp[0]->left);count++;} if(temp[0]->right) {temp.push_back(temp[0]->right);count++;} temp.erase(temp.begin()); } if(count>0) //如果下一层有count(>0)个节点,那么深度加1,k更新为count;{het++;k=count;} } return het; }
方法二分析:用递归的思想做的,路径一条一条的找,节点一个一个的增加,定义2个变量,一个保存每条路径的长度,一个保存现有路径的最大值,最后返回最大值就可以了。
void dgdeep(TreeNode *roop,int t,int &k){if(!roop->left&&!roop->right) {k=max(k,t); //当一条路径结束时,更新k的值;return;}if(roop->left) dgdeep(roop->left,t+1,k);if(roop->right) dgdeep(roop->right,t+1,k);}int TreeDepth(TreeNode* pRoot){if(!pRoot) return 0;int t=1,k=0; //t记录每条路径的深度,k记录当前最深的路径长度;dgdeep(pRoot,t,k);return k;}
阅读全文
0 0
- 剑指offer: 二叉树的深度(树)
- 剑指Offer之二叉树的深度
- 剑指offer--二叉树的深度
- 剑指offer之二叉树的深度
- 剑指Offer之 - 二叉树的深度
- 剑指offer-39 二叉树的深度
- 剑指offer 39 - 二叉树的深度
- 《剑指offer》二叉树的深度
- 剑指 offer:二叉树的深度
- 剑指offer—二叉树的深度
- 剑指Offer--二叉树的深度
- 剑指offer-二叉树的深度
- 剑指offer:求二叉树的深度
- 剑指offer 38 二叉树的深度
- 剑指offer 二叉树的深度
- 剑指Offer--039-二叉树的深度
- [剑指offer]二叉树的深度
- 剑指offer题解 二叉树的深度
- 使用IDEA创建Gradle项目整合SSM框架
- 创建ssm项目
- 方法
- tomcat启动https的配置
- 数据库入门---增删改查
- 【剑指offer】二叉树的深度
- 使用sqoop导入导出mysql、hdfs、hive出现的问题
- wx-charts 微信小程序图表插件
- 初入java
- STC15系列读取DS18B20温度传感器串口显示代码
- Cow Exhibition (01 背包变形)
- 软考网络工程师上午考试知识点总结整理
- 计算机视觉(图像分类、检测、分割)数据集和比赛
- Android布局(相对布局)