个人主页:CSDN清风莫追
1.题目描述
描述
求给定二叉树的最大深度,
深度是指树的根节点到任一叶子节点路径上节点的数量。
最大深度是所有叶子节点的深度的最大值。
(注:叶子节点是指没有子节点的节点。)
数据范围:,树上每个节点的val满足
要求: 空间复杂度 ,时间复杂度
注:示例中的输入是按照二叉树的层序遍历顺序,# 表示空。
2.算法设计思路
可以用递归的思路来解这个问题:
而对于左右子树的最大深度,我们也同样地使用上面的表达式计算。
直到递归到空的树,此时它的深度为 0 ,开始回升。
3.算法实现
注:这里并不是完整代码,而只是核心代码的模式
使用编程语言:C++
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * * @param root TreeNode类 * @return int整型 */ int maxDepth(TreeNode* root) { //到达叶子结点 if(root ** nullptr) return 0; int max = 0; int deep1 = maxDepth(root->left) + 1; int deep2 = maxDepth(root->right) + 1; if(deep1 > deep2) max = deep1; else max = deep2; return max; } };
4.运行结果
成功通过!
今天的分享就到这里啦,快来加入刷题大军叭!
感谢阅读
个人主页:CSDN清风莫追