二叉树的最大深度

2023-12-13 05:59:50

问题描述:

给定一个二叉树?root?,返回其最大深度。

二叉树的?最大深度?是指从根节点到最远叶子节点的最长路径上的节点数。

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:3

示例 2:

输入:root = [1,null,2]
输出:2

提示:

  • 树中节点的数量在?[0, 104]?区间内。
  • -100 <= Node.val <= 100

解题思路:

本次可以采用分治思想解决,如果二叉树为空,就返回0,若不为空,利用递归返回左子树与右子树深度最大的+1即可。

注意尽量不要用以下代码,此时代码效率太低,每次进行递归之后,又重复进行相同的递归

int maxDepth(struct TreeNode* root)
{
	if (root == NULL)
		return 0;
	int leftDepth = maxDepth(root->left);
	int rightDepth = maxDepth(root->right);
	return maxDepth(root->left) > maxDepth(root->right) ? maxDepth(root->left)+1 : maxDepth(root->right) + 1;
}

可以将递归得到的值存起来会大大提高效率。?代码如下:

int maxDepth(struct TreeNode* root)
{
	if (root == NULL)
		return 0;
	int leftDepth = maxDepth(root->left);
	int rightDepth = maxDepth(root->right);
	return leftDepth > rightDepth ? leftDepth + 1 : rightDepth + 1;
}

文章来源:https://blog.csdn.net/guai_guai_guai/article/details/134938068
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。