后序递归
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
int countNodes(TreeNode* root) {
int result = get_depth(root);
return result;
}
int get_depth(TreeNode *cur){
if (cur== nullptr) return 0;
int le = get_depth(cur->left);
int right = get_depth(cur->right);
int result = le + right+1;
return result;
}
};
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
int countNodes(TreeNode* root) {
if (root == nullptr){return 0;}
return countNodes(root->left);+countNodes(root->right);+1;
}
};
层序遍历
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
int countNodes(TreeNode* root) {
TreeNode *cur = root;
if (cur == nullptr) return 0;
int num = 0;
queue<TreeNode *> q_node;
q_node.push(cur);
while(!q_node.empty()){
int n = q_node.size();
for(int i = 0; i<n; i++){
cur = q_node.front();
q_node.pop();
num++;
if(cur->left) q_node.push(cur->left);
if(cur->right) q_node.push(cur->right);
}
}
return num;
}
};