104.二叉树的最大深度
题目链接:104.二叉树的最大深度-力扣(LeetCode)
思路:通过层序遍历,计算树有几层,即最大深度
class Solution {
public:
int maxDepth(TreeNode* root) {
queue<TreeNode*> que;
int result =0;
if(root) que.push(root);
while(!que.empty()){
int s = que.size();
result++;
for(int i=0; i<s; i++){
TreeNode* node = que.front();
que.pop();
if(node->left) que.push(node->left);
if(node->right) que.push(node->right);
}
}
return result;
}
};
参考文章:代码随想录-104.二叉树的最大深度
111.二叉树的最小深度
题目链接:111.二叉树的最小深度-力扣(LeetCode)
思路:层序遍历,找到第一个叶子节点所在的层数
class Solution {
public:
int minDepth(TreeNode* root) {
queue<TreeNode*> que;
int result =0;
if(root) que.push(root);
while(!que.empty()){
int s = que.size();
result++;
for(int i=0; i<s; i++){
TreeNode* node = que.front();
que.pop();
if(node->left) que.push(node->left);
if(node->right) que.push(node->right);
if(!node->left && !node->right) return result;
}
}
return result;
}
};
参考文章:代码随想录-111.二叉树的最小深度
222.完全二叉树的节点个数
题目链接:222.完全二叉树的节点个数-力扣(LeetCode)
思路:easy, 遍历所有节点,很容易算出,官方解法时间复杂度低,但是有点难写,需要二分查找
class Solution {
public:
int countNodes(TreeNode* root) {
if(!root) return 0;
return countNodes(root->left) + countNodes(root->right)+1;
}
};
参考文章:代码随想录-222.完全二叉树的节点个数