二叉树的最大深度
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!