Day54 二叉树的最大深度

作者: Shimmer_ | 来源:发表于2021-03-21 22:01 被阅读0次

    给定一个二叉树,找出其最大深度。

    https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/

    二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

    说明: 叶子节点是指没有子节点的节点。

    示例1:

    给定二叉树 [3,9,20,null,null,15,7],

    3
    

    / \
    9 20
    / \
    15 7
    返回它的最大深度 3

    Java解法

    思路:

    • 实际上就是求二叉树的层级
    • 可以通过递归的形式返回当前层级
    package sj.shimmer.algorithm.m3_2021;
    
    import sj.shimmer.algorithm.TreeNode;
    
    /**
     * Created by SJ on 2021/3/20.
     */
    
    class D54 {
        public static void main(String[] args) {
            System.out.println(maxDepth(TreeNode.getInstance(new Integer[]{3, 9, 20, null, null, 15, 7})));
        }
        public static int maxDepth(TreeNode root) {
            return maxDepth(0, root);
        }
        public static int maxDepth(int index,TreeNode node) {
            if (node == null) {
                return index;
            }
            return Math.max(maxDepth(index+1, node.left), maxDepth(index+1, node.right));
        }
    }
    
    image

    官方解

    https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/solution/er-cha-shu-de-zui-da-shen-du-by-leetcode-solution/

    1. 深度优先搜索

      写法较精炼,理解上多一层

      class Solution {
         public int maxDepth(TreeNode root) {
             if (root == null) {
                 return 0;
             } else {
                 int leftHeight = maxDepth(root.left);
                 int rightHeight = maxDepth(root.right);
                 return Math.max(leftHeight, rightHeight) + 1;
             }
         }
      }
      
      • 时间复杂度:O(n)
      • 空间复杂度:O(height) 递归深度
    2. 广度优先搜索

      广度优先条件下,会记录每层数据

    相关文章

      网友评论

        本文标题:Day54 二叉树的最大深度

        本文链接:https://www.haomeiwen.com/subject/kuaocltx.html