剑指offer 59. 二叉树的深度

简介: 剑指offer 59. 二叉树的深度

题目描述

输入一棵二叉树的根结点,求该树的深度

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

数据范围

树中节点数量 [0,500]。

样例

输入:二叉树[8, 12, 2, null, null, 6, 4, null, null, null, null]如下图所示:
   8
  / \
 12  2
 / \
6   4
输出:3

方法一:dfs O(n)


我们可以递归计算深度,先递归到树的叶子结点,然后开始回溯,每次回溯返回的是当前结点的深度,公式如下:


m a x ( 左子树深度 , 右子树深度 ) + 1 max(左子树深度,右子树深度)+1max(左子树深度,右子树深度)+1


举个例子,那题目样例来看,得到的结果如下图所示:



d2adc8df9bd64b749f0deb298f35b41b.png


/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int treeDepth(TreeNode* root) {
        if (root == NULL)  return 0;
        int left = treeDepth(root->left);
        int right = treeDepth(root->right);
        return max(left, right) + 1;
    }
};

欢迎大家在评论区交流~

目录
相关文章
|
10天前
|
算法 DataX
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
【剑指offer】-二叉树的深度-36/67
【剑指offer】-二叉树的深度-36/67
|
5月前
|
算法
代码随想录算法训练营第十五天 | LeetCode 104. 二叉树的最大深度、559. N 叉树的最大深度、111.二叉树的最小深度、222. 完全二叉树的节点个数
代码随想录算法训练营第十五天 | LeetCode 104. 二叉树的最大深度、559. N 叉树的最大深度、111.二叉树的最小深度、222. 完全二叉树的节点个数
38 0
|
6月前
【Leetcode -100.相同的树 -104.二叉树的深度】
【Leetcode -100.相同的树 -104.二叉树的深度】
16 0
|
10月前
剑指offer_二叉树---二叉树的深度
剑指offer_二叉树---二叉树的深度
50 0
|
10月前
|
算法 Java
代码随想录训练营day15|102.层序遍历 226.翻转二叉树 101.对称二叉树
代码随想录训练营day15|102.层序遍历 226.翻转二叉树 101.对称二叉树
剑指offer 55 二叉树的深度
DFS深度优先二叉树无非就那几个步骤
|
存储 算法 关系型数据库
重温算法之二叉树的锯齿形层序遍历
关于二叉树的题目其实是我的弱项,虽然二叉树不是很难理解,但是从学校开始接触二叉树开始就对它不是很感冒,所以很多时候都避开它,但是再难咬的骨头也的得啃,二叉树运用在很多程序的底层实现里,比如MySQL的索引实现就是B+树,我们懂得使用索引的同时也得知道,索引为什么这么快,而其快的原因就是底层里B+树得实现。
85 0
重温算法之二叉树的锯齿形层序遍历
|
算法
LeetCode 104. 二叉树的最大深度 | 算法-从菜鸟开始i
LeetCode 104. 二叉树的最大深度 | 算法-从菜鸟开始i
108 0