二叉树的节点数的问题

给出一个完整二叉树,查找结点个数。
假设二叉树结点结构如下:
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

请完成此函数:
class Solution
{
public:
int countNodes(TreeNode* root)
{
}
}
请给出该函数的算法复杂度,如O(n)/O(n^2)。

 class Solution
{
public:
int countNodes(TreeNode* root)
{
int n = 1;
if (root->left != null)
n += countNodes(root->left);
if (root->right != null)
n += countNodes(root->right;
return n;
}
}

复杂度O(N)