递归实现:
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
int maxDepth(TreeNode* root) {
// write code here
if (root == nullptr) return 0;
if (root->left == nullptr && root->right == nullptr) return 1;
int ldepth = maxDepth(root->left);
int rdepth = maxDepth(root->right);
return 1 + max(ldepth, rdepth);
}
};BFS:
// BFS
class Solution {
public:
int maxDepth(TreeNode* root) {
// write code here
if (root == nullptr) return 0;
queue<TreeNode*> que;
que.push(root);
int count = 0;
while (!que.empty()) {
int n = que.size();
while (n--) {
if(que.front()->left) que.push(que.front()->left);
if(que.front()->right) que.push(que.front()->right);
que.pop();
}
count++;
}
return count;
}
};DFS:
class Solution {
public:
int maxDepth(TreeNode* root) {
// write code here
if (root == nullptr) return 0;
stack<TreeNode*> stk; // 记录节点
stack<int> level; // 记录第几层
stk.push(root);
level.push(1);
int count = 0;
while (!stk.empty()) {
TreeNode *node = stk.top();
int tmp = level.top();
stk.pop();
level.pop();
count = max(count, tmp); // 记录最深层数
if (node->left) {
stk.push(node->left);
level.push(tmp + 1);
}
if (node->right) {
stk.push(node->right);
level.push(tmp + 1);
}
}
return count;
}
};


京公网安备 11010502036488号