码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer-二叉树的深度

时间:2018-04-03 14:22:40      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:保存   前序遍历   str   nbsp   null   最长路径   node   otto   off   

题目描述

输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
 

解题思路

max_dep保存最大深度,cur_dep保存当前遍历节点的深度,均初始化为0。利用前序遍历的思想,每次访问到一个节点,先对cur_dep加1,若当前节点为叶子结点,那么比较cur_dep与max_dep,若cur_dep更大则更新max_dep为当前节点深度。遍历完当前节点的左右子节点之后,对cur_dep减1,回溯到父节点继续遍历右子节点。当遍历完整棵树时,max_dep中保存的便是最大深度。

 

代码

 1 /*
 2 struct TreeNode {
 3     int val;
 4     struct TreeNode *left;
 5     struct TreeNode *right;
 6     TreeNode(int x) :
 7             val(x), left(NULL), right(NULL) {
 8     }
 9 };*/
10 class Solution {
11 public:
12     int max_dep = 0;
13     int cur_dep = 0;
14     int TreeDepth(TreeNode* pRoot)
15     {
16         if(pRoot != NULL){
17             cur_dep++;
18             if(pRoot->left)
19                 TreeDepth(pRoot->left);
20             if(pRoot->right)
21                 TreeDepth(pRoot->right);
22             if(pRoot->left == NULL&&pRoot->right == NULL)
23                 if(cur_dep > max_dep)
24                     max_dep = cur_dep;
25             cur_dep--;
26             return max_dep;
27         }
28         return max_dep;
29     }
30 };

 

剑指offer-二叉树的深度

标签:保存   前序遍历   str   nbsp   null   最长路径   node   otto   off   

原文地址:https://www.cnblogs.com/wmx24/p/8707849.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!