系列文章目录
文章目录
- 系列文章目录
- 前言
前言
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。
描述
求给定二叉树的最大深度,
深度是指树的根节点到任一叶子节点路径上节点的数量。
最大深度是所有叶子节点的深度的最大值。
(注:叶子节点是指没有子节点的节点。)
图解
算法流程:
定义递归函数功能:获取root结点的最大深度
递归终止条件:root为null
返回值:先递归左子结点,再递归右子结点,最后求出每一子树的深度的最大值
Java 版本代码如下:
import java.util.*;
public class Solution {
// 定义递归函数功能:求出当前结点的
public int maxDepth (TreeNode root) {
// 递归终止
if(root == null) {
return 0;
}
// dfs,先递归左子结点,再递归右子结点,最后求出每一子树的深度的最大值
return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
}
}
复杂度分析:
时间复杂度 O(N):计算所有结点的深度的递归需要经过每个结点
空间复杂度 O(N):递归占用的栈空间