I made a code to count the total number of nodes in a binary tree.

It simply traverses the tree using inorder traversal and counts all the nodes.Code:int count(struct node *root) { static int i=0; if(root!=NULL) { count(root->left); i++; count(root->right); } return i; }

I also found a code somewhere which is like this:

I want to know which one will be more efficent(time and space). What is the "O" notation for both of the codes?Code:int tree_size(struct node* node) { if (node==NULL) { return(0); } else { return(tree_size(node->left) + tree_size(node->right) + 1); } }

I'm a little weak to find "O" notation, that's why I'm asking for it.