解法1:dfs
class Solution {
public:
int maxDepth(TreeNode* root) {
if (!root) return 0;
return max(maxDepth(root->left), maxDepth(root->right)) + 1;
}
};
解法2:bfs
class Solution {
public:
int maxDepth(TreeNode* root) {
if (!root) return 0;
queue<TreeNode*> q;
q.push(root);
int layer = 0;
while (!q.empty()) {
int len = q.size();
for (int i = 0; i < len; ++i) {
auto frt = q.front(); //层为layer+1
if (frt->left) q.push(frt->left);
if (frt->right) q.push(frt->right);
q.pop();
}
layer++;
}
return layer;
}
};
层的处理:初始化为0,while里面当queue不为空时更新layer++