zoukankan      html  css  js  c++  java
  • 剑指offer-二叉树的深度

     

    题目描述

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

    解题思路

    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 };
  • 相关阅读:
    文件操作回顾
    数据类型回顾
    面向对象三大特性之封装与多态
    面向对象之继承
    轮播图
    jQuery事件操作
    jQuery动画效果
    jQuery篇
    文档对象模型
    javascript
  • 原文地址:https://www.cnblogs.com/wmx24/p/8707849.html
Copyright © 2011-2022 走看看