donmike25

in lab algo all questions

Dec 14th, 2013
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.79 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct tNode
  5. {
  6.     int data;
  7.     struct tNode *left;
  8.     struct tNode *right;
  9. }tnode;
  10.  
  11.  
  12. tnode *initNode(int);
  13. void tGrow();
  14. void task(tnode*);
  15. tnode *root;
  16.  
  17. void tGrow(){
  18.  
  19.  
  20.     root = initNode(0);
  21.     root->left = initNode(1);
  22.     root->right = initNode(2);
  23.     root->left->left = initNode(3);
  24.     root->left->right = initNode(4);
  25.     root->left->left->left = initNode(5);
  26.     root->left->left->right = initNode(6);
  27.     root->left->right->left = initNode(7);
  28.     root->left->right->right = initNode(8);
  29.     root->right->left = initNode(9);
  30.     root->right->right = initNode(10);
  31.     root->right->left->left = initNode(11);
  32.     root->right->left->right = initNode(12);
  33.     root->right->right->left = initNode(13);
  34.     root->right->right->right = initNode(14);
  35.  
  36.  
  37.  
  38. }
  39. tnode *initNode(int data){
  40.     tnode *temp;
  41.     temp = (tnode *)malloc(sizeof(tnode));
  42.     temp->data = data;
  43.     temp->right = NULL;
  44.     temp->left = NULL;
  45.     return temp;
  46.  
  47. }
  48.  
  49.  
  50.  
  51.  
  52.  
  53. //**question 1**
  54. /*int sum=0;
  55.  
  56. void inorder(tnode*);
  57. void postorder(tnode*);
  58. void preorder(tnode*);
  59. int main()
  60. {
  61.  
  62.  
  63.     tGrow();
  64.     task(root);
  65.    
  66.  
  67.  
  68.     return 0;
  69.  
  70. }
  71.  
  72. void preorder(tnode *node){
  73.  
  74.  
  75.     if (node)
  76.     {
  77.         sum =sum+ node->data;
  78.         preorder(node->left);
  79.         preorder(node->right);
  80.  
  81.     }
  82.  
  83.  
  84. }
  85.  
  86.  
  87.  
  88. void postorder(tnode *node){
  89.  
  90.  
  91.     if (node)
  92.     {
  93.         postorder(node->left);
  94.         postorder(node->right);
  95.         sum += node->data;
  96.     }
  97.  
  98.  
  99. }
  100.  
  101. void inorder(tnode *node){
  102.  
  103.  
  104.     if (node)
  105.     {
  106.         inorder(node->left);
  107.        
  108.         sum += node->data;
  109.         inorder(node->right);
  110.  
  111.     }
  112.  
  113.  
  114.  
  115.  
  116.  
  117. }
  118. void task(tnode* total){
  119.  
  120.     inorder(total);
  121.     printf("Sum of all values : %d\n", sum);
  122. }*/
  123.  
  124.  
  125.  
  126. //**question 2***//
  127.  
  128. /*void inorder(tnode*);
  129. void postorder(tnode*);
  130. void preorder(tnode*);
  131.  
  132.  
  133.  
  134. void preorder(tnode *node){
  135.  
  136.  
  137.     if (node)
  138.     {
  139.         if (node->data == 2)
  140.             printf("hello\t");
  141.         else
  142.         {
  143.  
  144.             printf("%d\t", node->data);
  145.         }
  146.         preorder(node->left);
  147.         preorder(node->right);
  148.  
  149.     }
  150.  
  151.  
  152. }
  153.  
  154.  
  155.  
  156. void postorder(tnode *node){
  157.  
  158.  
  159.     if (node)
  160.     {
  161.         postorder(node->left);
  162.         postorder(node->right);
  163.         if (node->data == 2)
  164.             printf("hello\t");
  165.         else
  166.         {
  167.  
  168.             printf("%d\t", node->data);
  169.         }
  170.     }
  171.  
  172.  
  173. }
  174.  
  175. void inorder(tnode *node){
  176.  
  177.  
  178.     if (node)
  179.     {
  180.         inorder(node->left);
  181.         if (node->data == 2)
  182.             printf("hello\t");
  183.         else
  184.         {
  185.  
  186.             printf("%d\t", node->data);
  187.         }
  188.        
  189.         inorder(node->right);
  190.  
  191.     }
  192.  
  193.  
  194.  
  195.  
  196.  
  197. }
  198. void task(tnode* total){
  199.     printf("Inorder traversal: ");
  200.     inorder(total);
  201.  
  202. }
  203.  
  204.  
  205. int main()
  206. {
  207.  
  208.  
  209.  
  210.    
  211.  
  212.  
  213.         tGrow();
  214.         task(root);
  215.  
  216.  
  217.  
  218.        
  219.  
  220. }*/
  221.  
  222.  
  223. //**question 3 **//
  224. /*void inorder(tnode*);
  225. void postorder(tnode*);
  226. void preorder(tnode*);
  227.  
  228.  
  229.  
  230.  
  231.  
  232. void preorder(tnode *node){
  233.  
  234.  
  235.     if (node)
  236.     {
  237.         if (node->data % 2 != 0)
  238.             printf("%d\t", node->data);
  239.         else
  240.        
  241.  
  242.             preorder(node->left);
  243.             preorder(node->right);
  244.        
  245.     }
  246.  
  247.  
  248. }
  249.  
  250.  
  251.  
  252. void postorder(tnode *node){
  253.  
  254.  
  255.     if (node)
  256.     {
  257.         postorder(node->left);
  258.         postorder(node->right);
  259.         if (node->data % 2 != 0)
  260.             printf("%d\t", node->data);
  261.    
  262.  
  263.     }
  264.  
  265.  
  266. }
  267.  
  268. void inorder(tnode *node){
  269.  
  270.  
  271.     if (node)
  272.     {
  273.         inorder(node->left);
  274.         if (node->data % 2 != 0)
  275.             printf("%d\t", node->data);
  276.         else
  277.         inorder(node->right);
  278.  
  279.     }
  280.  
  281. }
  282.  
  283.  
  284.     void task(tnode* total){
  285.         printf("Postorder traversal (odd numbers only):");
  286.         postorder(total);
  287.  
  288.     }
  289.  
  290.     int main()
  291.     {
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.         tGrow();
  299.         task(root);
  300.  
  301.  
  302.  
  303.  
  304.  
  305.     }*/
  306.  
  307. //** question 4 **//
  308.  
  309.  
  310. /*int occu = 0;
  311.  
  312.  
  313.  
  314. void inorder(tnode*);
  315. void postorder(tnode*);
  316. void preorder(tnode*);
  317.  
  318.  
  319.  
  320.  
  321.  
  322. void preorder(tnode *node){
  323.  
  324.  
  325.     if (node)
  326.     {
  327.         if (node->data == 2)
  328.             occu++;
  329.         else
  330.  
  331.  
  332.             preorder(node->left);
  333.         preorder(node->right);
  334.  
  335.     }
  336.  
  337.  
  338. }
  339.  
  340.  
  341.  
  342. void postorder(tnode *node){
  343.  
  344.  
  345.     if (node)
  346.     {
  347.         postorder(node->left);
  348.         postorder(node->right);
  349.         if (node->data == 2)
  350.             occu++;
  351.  
  352.  
  353.     }
  354.  
  355.  
  356. }
  357.  
  358. void inorder(tnode *node){
  359.  
  360.  
  361.     if (node)
  362.     {
  363.         inorder(node->left);
  364.         if (node->data == 2)
  365.             occu++;
  366.         else
  367.             inorder(node->right);
  368.  
  369.     }
  370.  
  371. }
  372.  
  373.  
  374. void task(tnode* total){
  375.    
  376.     postorder(total);
  377.     printf("No. of occurrences: %d\n", occu);
  378. }
  379. int main()
  380. {
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.     tGrow();
  388.     task(root);
  389.  
  390.  
  391.  
  392.  
  393.  
  394. }*/
  395.  
  396. //**question 5 **
  397.  
  398.  
  399. /*void inorder(tnode*);
  400. void postorder(tnode*);
  401. void preorder(tnode*);
  402.  
  403.  
  404.  
  405.  
  406.  
  407. void preorder(tnode *node){
  408.  
  409.  
  410.     if (node)
  411.     {
  412.         if (node->data == 2)
  413.             node->data = -1;
  414.        
  415.  
  416.         printf("%d\t", node->data);
  417.             preorder(node->left);
  418.         preorder(node->right);
  419.  
  420.     }
  421.  
  422.  
  423. }
  424.  
  425.  
  426.  
  427. void postorder(tnode *node){
  428.  
  429.  
  430.     if (node)
  431.     {
  432.         postorder(node->left);
  433.         postorder(node->right);
  434.         if (node->data == 2)
  435.             node->data = -1;
  436.         printf("%d\t", node->data);
  437.  
  438.     }
  439.  
  440.  
  441. }
  442.  
  443. void inorder(tnode *node){
  444.  
  445.  
  446.     if (node)
  447.     {
  448.         inorder(node->left);
  449.         if (node->data == 2)
  450.             node->data = -1;
  451.        
  452.             printf("%d\t", node->data);
  453.             inorder(node->right);
  454.  
  455.     }
  456.  
  457. }
  458.  
  459.  
  460. void task(tnode* total){
  461.     printf("Preorder traversal:");
  462.     postorder(total);
  463.    
  464. }
  465.  
  466.  
  467. int main()
  468. {
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.     tGrow();
  476.     task(root);
  477.  
  478.  
  479.  
  480.  
  481.  
  482. }*/
  483.  
  484. int odd, even;
  485. void inorder(tnode*);
  486. void postorder(tnode*);
  487. void preorder(tnode*);
  488.  
  489.  
  490.  
  491.  
  492.  
  493. void preorder(tnode *node){
  494.  
  495.  
  496.     if (node)
  497.     {
  498.         if (node->data % 2 == 0)
  499.             even++;
  500.         else
  501.             odd++;
  502.        
  503.  
  504.    
  505.         preorder(node->left);
  506.         preorder(node->right);
  507.  
  508.     }
  509.  
  510.  
  511. }
  512.  
  513.  
  514.  
  515. void postorder(tnode *node){
  516.  
  517.  
  518.     if (node)
  519.     {
  520.         postorder(node->left);
  521.         postorder(node->right);
  522.         if (node->data % 2 == 0)
  523.             even++;
  524.         else
  525.             odd++;
  526.  
  527.  
  528.  
  529.     }
  530.  
  531.  
  532. }
  533.  
  534. void inorder(tnode *node){
  535.  
  536.  
  537.     if (node)
  538.     {
  539.         inorder(node->left);
  540.         if (node->data % 2 == 0)
  541.             even++;
  542.         else
  543.             odd++;
  544.  
  545.  
  546.         inorder(node->right);
  547.  
  548.     }
  549.  
  550. }
  551.  
  552.  
  553. void task(tnode* total){
  554.    
  555.     preorder(total);
  556.     printf("Total no.of odd data : %d\n", odd);
  557.     printf("Total no.of even data : %d\n", even);
  558.  
  559. }
  560.  
  561.  
  562. int main()
  563. {
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.     tGrow();
  571.     task(root);
  572.  
  573.  
  574.  
  575.  
  576.  
  577. }
Advertisement
Add Comment
Please, Sign In to add comment