递归比较简单:
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root==NULL) return 0;
int left=maxDepth(root->left);
int right=maxDepth(root->right);
if(left>right) return left+1;
else return right+1;
}
};
非递归:最大深度,也就是层次遍历的层数,因此可以用队列辅助计算,每次弹出当前层中所有元素,依次把非空左右孩子入队列,循环依次层计数增1,最终就是最大深度。
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root==NULL) return 0;
queue<TreeNode*> q;
q.push(root);
int level = 0;
while(!q.empty()){
int len = q.size();
level++;
for(int i=0;i<len;i++){
TreeNode * cur = q.front();
if(cur->left) q.push(cur->left);
if(cur->right) q.push(cur->right);
q.pop();
}
}
return level;
}
};