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

Consider the following code

asked in Programming by Veteran (52.4k points)   | 101 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 Mar 2017
  1. rude

    4018 Points

  2. sh!va

    2994 Points

  3. Rahul Jain25

    2804 Points

  4. Kapil

    2606 Points

  5. Debashish Deka

    2092 Points

  6. 2018

    1414 Points

  7. Vignesh Sekar

    1318 Points

  8. Bikram

    1218 Points

  9. Akriti sood

    1166 Points

  10. Sanjay Sharma

    1004 Points

Monthly Topper: Rs. 500 gift card

21,439 questions
26,753 answers
60,919 comments
22,929 users