Adrita

task 3( ds lab 7) 3rd sem

Jul 6th, 2020
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int cnt;
  4. struct node
  5. {
  6. int data;
  7. struct node* left;
  8. struct node* right;
  9. };
  10. typedef struct node Node;
  11. Node* create_node(int item)
  12. {
  13. Node* new_node=new Node();
  14. if(new_node==NULL)
  15. cout<<"Error"<<endl;
  16. else
  17. {
  18. new_node->data=item;
  19. new_node->left=new_node->right=NULL;
  20. }
  21. return new_node;
  22. }
  23. Node* insert_key(Node* x,int key)
  24. {
  25. Node* new_node=create_node(key);
  26. if(x==NULL)
  27. return new_node;
  28. if(key>x->data)
  29. {
  30. x->right=insert_key(x->right,key);
  31. }
  32. else if(key<x->data)
  33. {
  34. x->left=insert_key(x->left,key);
  35. }
  36. return x;
  37. }
  38. bool Ancestors(struct node *root, int target)
  39. {
  40. if (root == NULL)
  41. return false;
  42.  
  43. if (root->data == target)
  44. return true;
  45.  
  46. if ( Ancestors(root->left, target) || Ancestors(root->right, target) )
  47. {
  48. cnt++;
  49. return true;
  50. }
  51. return false;
  52. }
  53. void find_node(Node *root, int level, int &maxLevel, int &res)
  54. {
  55. if (root != NULL)
  56. {
  57. find_node(root->left, ++level, maxLevel, res);
  58.  
  59. if (level > maxLevel)
  60. {
  61. res = root->data;
  62. maxLevel = level;
  63. }
  64.  
  65. find_node(root->right, level, maxLevel, res);
  66. }
  67. }
  68. int deepestNode(Node *root)
  69. {
  70. int res = -1;
  71. int maxLevel = -1;
  72. find_node(root, 0, maxLevel, res);
  73. return res;
  74. }
  75. int main()
  76. {
  77. Node* root=NULL;
  78. cnt=0;
  79. while(1)
  80. {
  81. int n;
  82. cin>>n;
  83. if(n!=-1)
  84. {
  85. root=insert_key(root,n);
  86. }
  87. else
  88. break;
  89. }
  90. int lastnode=deepestNode(root);
  91. Ancestors(root,lastnode);
  92. cout<<cnt<<endl;
  93.  
  94. }
Advertisement
Add Comment
Please, Sign In to add comment