12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
#include<iostream> using namespace std; struct node { int val; node* left; node* right; }; void insert(node* &newnode,int data) { newnode=new node; newnode->val=data; newnode->left=NULL; newnode->right=NULL; } int diameter=0; int dia(node* current,int ans) { if(current) { //cout<<current->val<<endl; int ld=dia(current->left,ans+1); int rd=dia(current->right,ans+1); if(ld+rd+1>diameter) diameter=ld+rd+1; if(ld>rd) return ld; else return rd; } else return ans-1; } int main() { node *root=NULL,**ptr; int no,x; cin>>no>>x; insert(root,x); for(int i=0;i<no-1;i++) { ptr=&root; string str; int temp; cin>>str; cin>>temp; for(int j=0;str[j]!='\0';j++) { if(str[j]=='L') { if((*ptr)->left==NULL) insert((*ptr)->left,0); ptr=&((*ptr)->left); } else { if((*ptr)->right==NULL) insert((*ptr)->right,0); ptr=&((*ptr)->right); } } insert((*ptr),temp); } dia(root,0); cout<<diameter; return 0; }
123456789101112131415
int dia(node* current) { if(current) { //!! diameter is whatever the sub-trees are, +1 int ld=dia(current->left)+1; int rd=dia(current->right)+1; if(ld>rd) return ld; else return rd; } else return 0; //!! empty tree is zero diameter }
#include<iostream> using namespace std; struct node { int val; struct node* left; struct node* right; }; node* insert(int data) { node* newnode=new node; newnode->val=data; newnode->left=NULL; newnode->right=NULL; return newnode; } int diameter=0; int dia(node* current) { if(current) { int ld=dia(current->left); int rd=dia(current->right); //cout<<current->val<<" "<<ld<<" "<<rd<<endl; if(ld+rd+1>diameter) diameter=ld+rd+1; if(ld>rd) return ld+1; else return rd+1; } else return 0; } int main() { int no,x; cin>>no>>x; node *root,**ptr; root=insert(x); for(int i=0;i<no-1;i++) { ptr=&root; string str; int temp; cin>>str; cin>>temp; for(int j=0;str[j]!='\0';j++) { if(str[j]=='L') { if((*ptr)->left==NULL) (*ptr)->left=insert(0); ptr=&((*ptr)->left); } else { if((*ptr)->right==NULL) (*ptr)->right=insert(0); ptr=&((*ptr)->right); } } (*ptr)=insert(temp); } dia(root); cout<<diameter; }
3 42 LL 13 L 54
(*ptr)->val=temp;