• 剑指offer——JZ55 二叉树的深度 解题思路与具体代码【C++】


    一、题目描述与要求

    二叉树的深度_牛客题霸_牛客网 (nowcoder.com)

    题目描述

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

    数据范围:节点的数量满足 0≤n≤100 ,节点上的值满足 0≤val≤100

    进阶:空间复杂度 O(1) ,时间复杂度 O(n)

    假如输入的用例为{1,2,3,4,5,#,6,#,#,7},那么如下图:

    示例

    示例1:

    输入:{1,2,3,4,5,#,6,#,#,7}

    返回值:4

    示例2:

    输入:{}

    返回值:0


    二、解题思路

    采用递归的思路 时间O(n) 空间O(n)

    首先判断是否为空树,若为空树,则深度为0;

    不是空树的话,该二叉树的深度应当是其左子树与右子树深度的最大值+1。

    所以我们需要分别求出其左子树和右子树的深度,而左子树和右子树分别又有各自的左子树与右子树,因此我们可以利用递归函数,来访问结点,一直到叶子结点就会逐层返回,最后就可以得到左子树与右子树各自的深度,然后+1就是二叉树的深度了。


    三、具体代码

    1. class Solution {
    2. public:
    3. int TreeDepth(TreeNode* pRoot) {
    4. int depth;
    5. if(pRoot==nullptr) depth=0;
    6. else {
    7. int depthLeft=TreeDepth(pRoot->left);
    8. int depthRight=TreeDepth(pRoot->right);
    9. depth=1+(depthLeft>depthRight?depthLeft:depthRight);
    10. }
    11. return depth;
    12. }
    13. };

  • 相关阅读:
    SpringBoot 异步接口
    JNA的内存对齐方式,简单案例介绍
    Open3D 点云投影至指定平面
    mongodb数据库操作
    Shell基础
    Linux内存管理--smaps内存
    MySQL 索引(一)
    OpenCV数字图像处理基于C++:灰度变换
    Kubernetes:更新与回滚
    大数据 为什么用
  • 原文地址:https://blog.csdn.net/m0_59800431/article/details/133581062