1 #include <iostream> 2 using namespace std; 3 typedef struct node{ 4 char data; 5 node *lchild,*rchild; 6 }binode,*bitree; 7 bitree createTree(bitree root) 8 { 9 char ch; 10 cin>>ch; 11 if(ch=='#') 12 root=NULL; 13 else 14 { 15 root=new binode; 16 root->data=ch; 17 root->lchild=createTree(root->lchild); 18 root->rchild=createTree(root->rchild); 19 } 20 return root; 21 } 22 void InOrderTraverse(bitree root) 23 { 24 if(root!=NULL) 25 { 26 cout<<root->data<<" "; 27 InOrderTraverse(root->lchild); 28 InOrderTraverse(root->rchild); 29 } 30 } 31 int depth(bitree root) 32 { 33 int left=0,right=0 ; 34 if(!root) 35 return 0; 36 else 37 { 38 right=depth(root->rchild); 39 left=depth(root->lchild); 40 } 41 return right>left?right+1:left+1; 42 } 43 int count(bitree root) 44 { 45 int n=0; 46 if(!root) 47 return 0; 48 else if(root->lchild==NULL&&root->rchild==NULL) 49 return 1; 50 else 51 n=count(root->lchild)+count(root->rchild); 52 return n; 53 } 54 int main() 55 { 56 bitree root=NULL; 57 root=createTree(root); 58 InOrderTraverse(root); 59 cout<<depth(root)<<endl; 60 cout<<count(root)<<endl; 61 }