一、运行结果
二、题目
求给定二叉树的最大深度,
深度是指树的根节点到任一叶子节点路径上节点的数量。
最大深度是所有叶子节点的深度的最大值。
(注:叶子节点是指没有子节点的节点。)
数据范围:0≤n≤100000,树上每个节点的val满足0≤∣val∣≤100
要求: 空间复杂度 O(1),时间复杂度 O(n)
示例1
输入:{1,2}
返回值:2
三、思路
采用递归的深度优先搜索策略,找到从根节点到所有叶子结点的路径,其中最长的一条路径的长度就是二叉树的最大深度。
四、代码
class Solution {
public:
int maxDepth(TreeNode* root) {
int ans = 0;
dfs(root, 0, ans);
return ans;
}
void dfs(TreeNode* root, int depth, int& maxdepth){
if(root == NULL) return;
depth++;
if(depth > maxdepth) maxdepth = depth;
if(root->left)
dfs(root->left, depth, maxdepth);
if(root->right)
dfs(root->right, depth, maxdepth);
}
};