leetCode104二叉树的最大深度(java实现)

leetCode104:二叉树的最大深度(java实现)

题目概述:

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

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

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

示例:

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

    3
   / \
  9  20
    /  \
   15   7

返回它的最大深度 3 。

题目解析:

  • 如果二叉树为空返回0

  • 最好用递归做,因为遍历长度不确定

  • 除了叶子节点,每个节点都有孩子

  • 如果只有根节点,则默认高度为1

  • 如果该节点有孩子我们就+1

  • 最后处理左右孩子的最大值当作返回值

  • 把每个节点都当作根节点

代码实现:

package com.yang.leetcode.classic;

/**
 * @author: fudy
 * @date: 2020/9/14 下午 08:49
 * @Decription: leetCode104:二叉树的最大深度
 **/
public class TreeHigh {
    
    

    // 定义数据结构
    public class TreeNode {
    
    
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x) {
    
    
            val = x;
        }
    }

    public int maxDepth(TreeNode root) {
    
    
        // 如果该节点为空则返回0
        if (root == null) {
    
    
            return 0;
        }
        // 得到左节点的高度
        int lefti = maxDepth(root.left);
        // 得到右节点的高度
        int righti = maxDepth(root.right);
        // 如果左右孩子存在,则取出最大值加一(根节点默认高度为1)
        // 利用工具类内存占用量更少
        return Math.max(lefti, righti) + 1;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44112474/article/details/108588073