Skip to content
GATEiit

GATE CSE 2023 Q47: Output of a recursive subtree-sum function on a binary tree

Question

Consider the C function foo and the binary tree shown.

typedef struct node {
  int val;
  struct node *left, *right;
} node;

int foo(node *p) {
  int retval;
  if (p == NULL)
    return 0;
  else {
    retval = p->val + foo(p->left) + foo(p->right);
    printf("%d ", retval);
    return retval;
  }
}
Binary tree: root 10 with left child 5 and right child 11; 5 has children 3 and 8; 11 has right child 13
Tap the figure to enlarge

When foo is called with a pointer to the root node of the given binary tree, what will it print?

Try it: multiple choice: exactly one correct option

Select one option
Wrong answer costs 2/3 mark in GATE.
Show answer and explanation

Answer: C (official GATE 2023 final answer key)

Concept used: Post-order traversal: each node prints the sum of its subtree after both children are done.

First step: Visit nodes in post-order (3, 8, 5, 13, 11, 10) and print each subtree sum.

Full step-by-step solution

Detailed working, common mistakes and linked mock tests will be available with a free GATEiit account. Log-in is coming soon.

Share this question

WhatsAppDownload image

Source: official GATE 2023 CS question paper and final answer key, organised by IIT Kanpur. Question paper · Answer key