求给定二叉树的最大深度,
深度是指树的根节点到任一叶子节点路径上节点的数量。
最大深度是所有叶子节点的深度的最大值。
(注:叶子节点是指没有子节点的节点。)
数据范围:0 \le n \le 1000000≤n≤100000,树上每个节点的val满足 |val| \le 100∣val∣≤100
要求: 空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)
示例1
输入:
{1,2}
复制返回值:
2
示例2
输入:
{1,2,3,4,#,#,5}
返回值:
3
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型
*/
int maxDepth(TreeNode* root) {
// write code here
return root? 1 + max(maxDepth(root->left), maxDepth(root->right)): 0;
}
};
经典的one line code解题,递归的思路非常简单清晰。
时间复杂度为O(N),空间复杂度为O(1)。