222. 完全二叉树的节点个数
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-complete-tree-nodes/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目描述
题目分析
- 迭代
class Solution {
public:
int countNodes(TreeNode* root) {
//11
int res = 0;
queue<TreeNode*> que;
if(root != nullptr) que.push(root);
while(!que.empty()){
int n = que.size();
while(n--){
res++;
TreeNode* temp = que.front();
que.pop();
if(temp->left) que.push(temp->left);
if(temp->right) que.push(temp->right);
}
}
return res;
}
};
- 递归
深度搜索的后序
class Solution {
public:
int getNpdeSum(TreeNode* root){
if(root == nullptr) return 0;
int leftNum = getNpdeSum(root->left);
int rightNum = getNpdeSum(root->right);
return 1 + leftNum + rightNum;
}
int countNodes(TreeNode* root) {
//11
return getNpdeSum(root);
}
};
也可以利用完全二叉树的特点做这道题。