二叉树的最大深度

这篇博客探讨了如何通过深度优先搜索(DFS)算法来计算二叉树的最大深度。二叉树的深度是从根节点到最远叶子节点的最长路径上的节点数。在DFS过程中,递归地计算左右子树的最大深度,并返回两者之间的最大值加1,从而得到以当前节点为根的子树的最大深度。这种方法避免了BFS所需的额外空间,适合解决此类问题。
摘要由CSDN通过智能技术生成

一、题目描述

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

二叉树的深度为根节点到最远叶子节点最长路径上的节点数。
在这里插入图片描述

二、理解题意

二叉树最大深度:该二叉树所有深度的最大值。
在这里插入图片描述

三、Choose 数据结构及算法思维选择

DFS(递归)

  • BFS是横向遍历每一个节点,需要O(n)的空间复杂度
  • DFS将会纵向遍历节点,在遍历每个节点时,即可得到当前节点至根节点的深度,无需存储
    在这里插入图片描述

四、代码实现

// 递归三要素
// 1)确定函数等价关系式(参数,返回值)。参数是传入树的根节点,返回值是树的深度
public int maxDepth(TreeNode root) {
	
	// 2)确定结束条件。如果节点为空,返回0
	// 且此处可以处理二叉树为空的corner case
	if(root == null) { return 0; }
	
	// 3)函数主功能。分别求左右子树最大深度,返回左右子树深度最大值 + 1
	// 即为当前节点为根节点的树的最大深度
	int leftTreeDepth=maxDepth(root.left);
	int rightTreeDepth=maxDepth(root.right);
	
	return Math.max(leftTreeDepth,rightTreeDepth)+1
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值