剑指 Offer 55 - I. 二叉树的深度

学习目标:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值