题解 | #二叉树的最大深度#

二叉树的最大深度

http://www.nowcoder.com/practice/8a2b2bf6c19b4f23a9bdb9b233eefa73

方法一(递归)

1.题意整理

  • 给定一颗二叉树。
  • 求二叉树的最大深度。深度是指树的根节点到任一叶子节点路径上节点的数量。

2.思路整理

按照二叉树递归的套路,需要考虑当前节点的情况、当前节点左子树的情况、当前节点右子树的情况。只要知道当前节点左右子树的深度,那么当前节点为根的子树的深度即为两者中较大的一个深度加1。

  • 递归终止条件:root为空,直接返回0。
  • 递归如何传递:每次需要往左右子树方向递归,只要直到左右子树深度,即可计算当前子树深度。
  • 递归的返回值:返回当前子树深度。

图解展示: alt

3.代码实现

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @return int整型
     */
    public int maxDepth (TreeNode root) {
        //为空,直接返回0
        if(root==null) return 0;
        //左子树深度
        int left=maxDepth(root.left);
        //右子树深度
        int right=maxDepth(root.right);
        //左右子树深度的较大者加1即为当前子树深度
        return Math.max(left,right)+1;
    }
}

4.复杂度分析

  • 时间复杂度:需要遍历二叉树中所有节点,所以时间复杂度是O(n)O(n)
  • 空间复杂度:递归栈的深度为log2nlog_2n,当退化为链表时,深度为n,所以空间复杂度为O(n)O(n)
xqxls的题解 文章被收录于专栏

牛客题解

全部评论

相关推荐

27双非本,最近面试被挂麻了面试官说简历内容太简单了,技术栈要单独一行,各位佬有啥建议吗
LZStarV:项目太简单了,你像用什么开发的技术栈没必要写一句话,按点写就好了;有特色的比如说WebSocket、视频流这种狠狠吹,那就好看多了
点赞 评论 收藏
分享
09-19 13:59
门头沟学院 Java
用微笑面对困难:Trae一下,如果真成了,他用了直接发字节起诉代码版权,,这个代码不商用是没问题的如果没成也是情理之中的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务