//size of tree
#include<iostream>
#include<queue>
using namespace std;
class node
{
public:
int data;
node *left;
node *right;
};
class tree
{
node *root;
queue <node*>q;
int auxi(node *root);
public:
tree();
int size_tree();
void insert(int data);
};
tree::tree()
{
root=NULL;
}
void tree::insert(int data)
{
node *temp=new node;
temp->left=temp->right=NULL;
temp->data=data;
if(root==NULL)
{
root=temp;
q.push(temp);
return;
}
else
{
node *curr;
while(!q.empty())
{
curr=q.front();
if(curr->left==NULL)
{
curr->left=temp;
q.push(temp);
return;
}
if(curr->right==NULL)
{
curr->right=temp;
q.push(temp);
return;
}
q.pop();
}
}
}
//Function for calculating size of tree
int tree::size_tree()
{
return auxi(root);
}
int tree::auxi(node *root)
{
if(root==NULL)
{
return 0;
}
if(root!=NULL)
{
return auxi(root->left)+auxi(root->right)+1;
}
}
int main()
{
int y;
tree t;
t.insert(1);
t.insert(2);
t.insert(3);
t.insert(4);
t.insert(5);
t.insert(6);
y=t.size_tree();
cout<<y<<" ";
}
Ly9zaXplIG9mIHRyZWUKI2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHF1ZXVlPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjbGFzcyBub2RlCnsKCXB1YmxpYzoKICAgICBpbnQgZGF0YTsKCSBub2RlICpsZWZ0OwoJIG5vZGUgKnJpZ2h0Owp9OwpjbGFzcyB0cmVlIAp7CiAgICBub2RlICpyb290OwogICAgcXVldWUgPG5vZGUqPnE7CiAgICBpbnQgYXV4aShub2RlICpyb290KTsKICAgIHB1YmxpYzoKICAgIAl0cmVlKCk7CiAgIAkgIGludCBzaXplX3RyZWUoKTsKICAgCSAgdm9pZCBpbnNlcnQoaW50IGRhdGEpOwp9Owp0cmVlOjp0cmVlKCkKewoJcm9vdD1OVUxMOwp9CnZvaWQgdHJlZTo6aW5zZXJ0KGludCBkYXRhKQp7Cglub2RlICp0ZW1wPW5ldyBub2RlOwoJdGVtcC0+bGVmdD10ZW1wLT5yaWdodD1OVUxMOwoJdGVtcC0+ZGF0YT1kYXRhOwoJaWYocm9vdD09TlVMTCkKCXsKCQlyb290PXRlbXA7CgkJcS5wdXNoKHRlbXApOwoJCXJldHVybjsKCX0KCWVsc2UKCXsKCQlub2RlICpjdXJyOwoJCXdoaWxlKCFxLmVtcHR5KCkpCgkJewoJCQljdXJyPXEuZnJvbnQoKTsKCQkJaWYoY3Vyci0+bGVmdD09TlVMTCkKCQkJewoJCQkJY3Vyci0+bGVmdD10ZW1wOwoJCQkJcS5wdXNoKHRlbXApOwoJCQkJcmV0dXJuOwoJCQl9CgkJCWlmKGN1cnItPnJpZ2h0PT1OVUxMKQoJCQl7CgkJCQljdXJyLT5yaWdodD10ZW1wOwoJCQkJcS5wdXNoKHRlbXApOwoJCQkJcmV0dXJuOwoJCQl9CgkJCXEucG9wKCk7CgkJfQoJfSAgCn0KLy9GdW5jdGlvbiBmb3IgY2FsY3VsYXRpbmcgc2l6ZSBvZiB0cmVlCmludCB0cmVlOjpzaXplX3RyZWUoKQp7CglyZXR1cm4gYXV4aShyb290KTsKfQppbnQgdHJlZTo6YXV4aShub2RlICpyb290KQp7ICAgCglpZihyb290PT1OVUxMKQoJIHsgCgkgCXJldHVybiAwOwoJIH0KCWlmKHJvb3QhPU5VTEwpCgkgewoJIAlyZXR1cm4gIGF1eGkocm9vdC0+bGVmdCkrYXV4aShyb290LT5yaWdodCkrMTsKCSB9Cn0KaW50IG1haW4oKQp7CiAgICBpbnQgeTsKCXRyZWUgdDsKCXQuaW5zZXJ0KDEpOwoJdC5pbnNlcnQoMik7Cgl0Lmluc2VydCgzKTsKCXQuaW5zZXJ0KDQpOwoJdC5pbnNlcnQoNSk7Cgl0Lmluc2VydCg2KTsKCXk9dC5zaXplX3RyZWUoKTsKCWNvdXQ8PHk8PCIgIjsKfQ==