解答:求最大深度,可用bfs,也可用dfs,这里我用dfs写的,通过前序遍历遍历树,k为当前路径节点数量,是不是叶子节点不用判断,只要k大于max就更新max。遍历结束,max即最大深度。因为遍历了所有节点所以时间复杂度为O(n),只用了常数个变量,所以空间复杂度为O(1)。
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型
*/
int max=-1;
int maxDepth(TreeNode* root) {
// write code here
if(root==NULL)return 0;
dfs(root,1);
return max;
}
void dfs(TreeNode* root,int k){
if(root==NULL){//边界
return;
}
if(k>max){
max=k;
}
k++;//前序遍历
dfs(root->left,k);
dfs(root->right,k);
}
};