【38】二叉树的深度
2016-08-05 11:53
113 查看
[38]二叉树的深度
时间限制:1秒空间限制:32768K
题目描述
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
题目链接:点击这里
VS2010代码
// Source : http://www.nowcoder.com/practice/435fb86331474282a3499955f0a41e8b?tpId=13&tqId=11191&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking // Author : Qiang Yang // Date : 2016-08-04 /************************************************************** * *[38]二叉树的深度 *参与人数:4679 *时间限制:1秒 *空间限制:32768K * *题目描述 * *输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点 *(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 * ****************************************************************/ #include<iostream> #include<vector> using namespace std; //思路: //设置两个参数,当前最大深入和候选深度。用深度优先遍历整个树。 struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; class Solution { public: int TreeDepth(TreeNode* pRoot) { if(!pRoot) return 0; int LDepth=0; //左支深度 int RDepth=0; //右支深度 int Depth=1; //当前最大深度 //当前左支深度 LDepth=Depth+TreeDepth(pRoot->left); //当前右支深度 RDepth=Depth+TreeDepth(pRoot->right); //由左右支深度更新当前最大深度 LDepth<RDepth? Depth=RDepth:Depth=LDepth; return Depth; } }; //测试用例: //1.{1,2,3,4,5,#,6,#,#,7},对应输出 4 。
说明:感觉这是代码写的最少的一次。深入理解递归。
从顶层向下思考,从底层向上执行。
牛客网通过图片:
相关文章推荐
- 38、二叉树的深度
- 38二叉树的深度
- 剑指Offer——(38)二叉树的深度
- 剑指Offer—38—二叉树的深度
- 剑指offer解题报告(Java版)——二叉树的深度 判断二叉树是否平衡 38
- IMWeb提升营Day7 | 训练题38:二叉树的深度
- 剑指offer 38 二叉树的深度
- (C++)剑指offer-38:二叉树的深度(知识迁移能力)
- 剑指Offer_38_二叉树的深度
- 二叉树的插入,递归遍历和深度节点数
- leetcode:Maximum Depth of Binary Tree(计算二叉树深度) 【面试算法】
- Maximum Depth of Binary Tree 二叉树的最大深度
- 二叉树的建立,遍历,节点个数,深度
- 数据结构实验之二叉树八:(中序后序)求二叉树的深度
- 数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 二叉树的最小深度
- 剑指offer: 二叉树的深度(树)
- 求二叉树的深度和宽度[Java]
- 二叉树的最大深度
- 数据结构--二叉树的遍历--求二叉树的深度(后序遍历)