文章目录
Leetcode104
1.问题描述
2.解决方案
解法一:深度优先(O(n))
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root== nullptr) return 0;
return max(maxDepth(root->left),maxDepth(root->right))+1;
}
};
解法二:广度优先(O(n))
class Solution {
public:
int maxDepth(TreeNode* root) {
if (root == nullptr) return 0;
queue<TreeNode*> Q;
Q.push(root);
int ans = 0;
while (!Q.empty()) {
int sz = Q.size();
while (sz > 0) {
TreeNode* node = Q.front();Q.pop();
if (node->left) Q.push(node->left);
if (node->right) Q.push(node->right);
sz -= 1;
}
ans += 1;
}
return ans;
}
};
Leetcode559
1.问题描述
2.解决方案
解法一:递归
class Solution {
public:
int maxDepth(Node* root) {
if(root== nullptr) return 0;
int Max=0;
for(int i=0;i<root->children.size();i++){
Max=max(Max, maxDepth(root->children[i]));
}
return Max+1;
}
};
解法二:迭代层序遍历
普通的层序遍历,这里就不给出代码实现了
解法三:迭代后序遍历
用栈模拟后序遍历,这个没看懂,等等