GATE CSE
First time here? Checkout the FAQ!
x
+3 votes
102 views

Consider the following code

asked in Programming by Veteran (53.2k points)   | 102 views
x is uninitialised..How to go about it..:)
x is no where used in the code. And the question asks for the sum of the internal nodes after the execution of that function. So i think ans is 22.
yes, x is not required in calculation . na?

@Habib

1 Answer

+5 votes
Best answer
It will change the value of all the nodes which are odd.

Means root->left  will become 0 from 1

and root->right will become 6 from 7

4  

0 6

6 4 2

8 2 8

Now sum of internal nodes wil be : 4 + 0 + 6 + 6 + 4 + 2 =  22
answered by Loyal (2.7k points)  
selected by
//check the code for the above , run it on ide , 
//and tested it yourself with different test cases.
#include <bits/stdc++.h>
using namespace std;
struct treenode{
 int data;
 treenode *left;
 treenode *right;
};
treenode* create(int data){
   treenode *temp = (treenode*)malloc(sizeof(treenode));
   temp->data = data;
   temp->left = temp->right  = NULL;
   return temp;
}
int solve(treenode *root) { // will return 0 always
  int x;
  if(root == NULL) return 0;
  else
  if(root->data % 2 == 1){ // changing odd data items
      root->data -= 1;
      x++;
  }
  return solve(root->left) + solve(root->right);
}
void inorder(treenode *root) {
  if(root == NULL) return;
    inorder(root->left);
    cout << root->data <<" ";
    inorder(root->right);
}
int main(){
     treenode *root;
     root = create(4);
     root->left = create(1);
     root->right = create(7);
     root->left->left = create(6);
     root->left->right = create(4);
     root->right->left = create(2);
     root->left->left->right = create(8);
     root->left->right->left = create(2);
     root->right->left->left = create(8);
     cout << solve(root) << endl;
     inorder(root);
     cout << endl;
    return 0;
}

 



// output
0
6 8 0 2 4 4 8 2 6 

 


 



Top Users Apr 2017
  1. akash.dinkar12

    3660 Points

  2. Divya Bharti

    2580 Points

  3. Deepthi_ts

    2040 Points

  4. rude

    1966 Points

  5. Tesla!

    1768 Points

  6. Debashish Deka

    1614 Points

  7. Shubham Sharma 2

    1610 Points

  8. Prashant.

    1492 Points

  9. Arjun

    1472 Points

  10. Arunav Khare

    1464 Points

Monthly Topper: Rs. 500 gift card

22,088 questions
28,063 answers
63,298 comments
24,173 users