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;
}
}