学习目标:
剑指 Offer 55 - I. 二叉树的深度
学习内容:
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
例如:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
提示:
节点总数 <= 10000
学习时间:
2020年12月
学习产出:
package 二叉树的最大深度;
/**
*
* @ClassName: Solution.java
* @Description:
* 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
* 说明:叶子节点是指没有子节点的节点。 方法:遍历左右子树,返回左右子树深度中的最大值
* @version: v1.0.0
* @author: 童梦君
* @date: 2020年12月6日 上午1:30:22
*
* Modification History: Modification History: Date Author Version
* Description
* ----------------------------------------------------------------*
* 2020年12月6日 童梦君 v1.0.0 修改原因
*/
public class Solution {
//直接计算深度返回最大值
public int maxDepth(TreeNode root) {
if (root == null) {
return 0;
} else {
int left = maxDepth(root.left);
int right = maxDepth(root.right);
return Math.max(left, right) + 1;
}
}
//动态规划:状态方程为返回当前结点的深度和ans中的最大值,当左右子树都为null时返回(此时为叶子节点)
public int maxDepth(TreeNode root) {
if(root==null)
return 0;
if(root.left==null&&root.right==null)
return 1;
int ans = Integer.MIN_VALUE;
if(root.left!=null) {
ans = Math.max(maxDepth(root.left), ans);
}
if(root.right!=null) {
ans = Math.max(maxDepth(root.right), ans);
}
return ans+1;
}
}