Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool find(Node*root,int a,vector<int>&v)
- {
- if(!root)return 0;
- v.push_back(root->data);
- if(root->data==a)return 1;
- if((root->left&&find(root->left,a,v))||(root->right&&find(root->right,a,v)))return true;
- v.pop_back();
- return 0;
- }
- int findDist(Node* root, int a, int b) {
- if(b==a)return 0;
- vector<int>v1,v2;
- find(root,a,v1);
- find(root,b,v2);
- int i;
- for(i=0;i<v1.size()&&i<v2.size();i++)
- {
- if(v1[i]!=v2[i])break;
- }
- // cout<<v1.size()<<v2.size()<<i<<endl;
- int s=v1.size()+v2.size()-2*i;
- return s;
- }
Add Comment
Please, Sign In to add comment