3 votes 3 votes Consider the following code Programming in C output + – srestha asked Jan 10, 2017 srestha 474 views answer comment Share Follow See all 3 Comments See all 3 3 Comments reply Habibkhan commented Jan 10, 2017 reply Follow Share x is uninitialised..How to go about it..:) 0 votes 0 votes Kaushik.P.E commented Jan 10, 2017 i edited by Kaushik.P.E Jan 10, 2017 reply Follow Share 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. 0 votes 0 votes srestha commented Jan 10, 2017 reply Follow Share yes, x is not required in calculation . na? @Habib 0 votes 0 votes Please log in or register to add a comment.
Best answer 5 votes 5 votes 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 vipsharmavip answered Jan 10, 2017 • selected Jan 11, 2017 by Kapil vipsharmavip comment Share Follow See 1 comment See all 1 1 comment reply vipsharmavip commented Jan 10, 2017 i edited by dd Jan 11, 2017 reply Follow Share //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 3 votes 3 votes Please log in or register to add a comment.