Bird
Raised Fist0
DSA Cprogramming~10 mins

Create a Binary Tree Manually in DSA C - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare a struct for a binary tree node.

DSA C
struct Node {
    int data;
    struct Node* [1];
    struct Node* right;
};
Drag options to blanks, or click blank then click option'
Aleft
Bchild
Cnext
Dparent
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'child' or 'next' instead of 'left' for the left child pointer.
2fill in blank
medium

Complete the code to create a new node with given data.

DSA C
struct Node* createNode(int data) {
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = data;
    newNode->left = NULL;
    newNode->[1] = NULL;
    return newNode;
}
Drag options to blanks, or click blank then click option'
Aparent
Bright
Cchild
Dnext
Attempts:
3 left
💡 Hint
Common Mistakes
Initializing the wrong pointer or forgetting to initialize the right pointer.
3fill in blank
hard

Fix the error in the code to assign the left child of root.

DSA C
root->[1] = createNode(5);
Drag options to blanks, or click blank then click option'
Aparent
Bchild
Cnext
Dleft
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'child' or 'next' instead of 'left' pointer.
4fill in blank
hard

Fill both blanks to assign left and right children to root.

DSA C
root->[1] = createNode(3);
root->[2] = createNode(7);
Drag options to blanks, or click blank then click option'
Aleft
Bright
Cchild
Dnext
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up left and right pointers or using incorrect pointer names.
5fill in blank
hard

Fill all three blanks to print the root and its children data.

DSA C
printf("Root: %d\n", root->[1]);
printf("Left Child: %d\n", root->[2]->data);
printf("Right Child: %d\n", root->[3]->data);
Drag options to blanks, or click blank then click option'
Adata
Bleft
Cright
Dchild
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'child' or missing 'data' when printing values.

Practice

(1/5)
1. What is the correct way to manually create a binary tree node in C with value 10?
easy
A. Create a struct node with data = 10 and left, right pointers set to NULL
B. Create an integer variable with value 10
C. Use an array of size 10 to represent the tree
D. Declare a pointer without initializing it

Solution

  1. Step 1: Understand binary tree node structure

    A binary tree node in C is usually a struct with data and two pointers (left and right) to child nodes.
  2. Step 2: Initialize node with value and NULL children

    To create a node with value 10, set data = 10 and left, right pointers to NULL to indicate no children yet.
  3. Final Answer:

    Create a struct node with data = 10 and left, right pointers set to NULL -> Option A
  4. Quick Check:

    Binary tree node = struct with data + NULL children [OK]
Hint: Binary tree node = struct with data + NULL children [OK]
Common Mistakes:
  • Using an integer variable instead of a struct node
  • Not initializing left and right pointers to NULL
  • Using arrays to represent nodes directly
  • Declaring pointers without allocation or initialization
2. Which of the following is the correct syntax to create a new binary tree node dynamically in C?
easy
A. node newNode = malloc(sizeof(node));
B. struct node newNode = malloc(sizeof(struct node));
C. struct node *newNode = new struct node();
D. struct node *newNode = malloc(sizeof(struct node));

Solution

  1. Step 1: Use malloc to allocate memory for a struct pointer

    In C, dynamic memory allocation for a struct pointer uses malloc with sizeof the struct type.
  2. Step 2: Correct pointer declaration and malloc usage

    struct node *newNode = malloc(sizeof(struct node)); correctly declares a pointer and assigns malloc result cast implicitly to void*.
  3. Final Answer:

    struct node *newNode = malloc(sizeof(struct node)); -> Option D
  4. Quick Check:

    Dynamic node creation = pointer + malloc(sizeof(struct node)) [OK]
Hint: Use malloc with sizeof(struct node) for dynamic node creation [OK]
Common Mistakes:
  • Declaring struct variable instead of pointer for malloc
  • Using C++ style new operator in C
  • Missing struct keyword in declaration
  • Incorrect type name without struct keyword
3. Given the following code snippet, what is the output when printing root->left->data?
struct node {
  int data;
  struct node *left, *right;
};

struct node *root = malloc(sizeof(struct node));
root->data = 1;
root->left = malloc(sizeof(struct node));
root->left->data = 2;
root->right = NULL;

printf("%d", root->left->data);
medium
A. 0
B. 1
C. 2
D. Segmentation fault

Solution

  1. Step 1: Trace node assignments

    root->left is allocated and its data is set to 2.
  2. Step 2: Print root->left->data value

    Printing root->left->data outputs 2 as assigned.
  3. Final Answer:

    2 -> Option C
  4. Quick Check:

    root->left->data = 2 [OK]
Hint: Follow pointer assignments step-by-step to find printed value [OK]
Common Mistakes:
  • Confusing root->data with root->left->data
  • Assuming uninitialized pointers have zero
  • Expecting segmentation fault without null check
  • Misreading pointer dereference
4. Identify the error in the following code that tries to create a binary tree node:
struct node {
  int data;
  struct node *left, *right;
};

struct node *root;
root->data = 5;
root->left = NULL;
root->right = NULL;
medium
A. Missing semicolon after struct definition
B. root is not initialized with memory before use
C. Incorrect struct member names
D. root should be an integer, not a pointer

Solution

  1. Step 1: Check pointer initialization

    root is declared as a pointer but not assigned memory with malloc or set to a valid node.
  2. Step 2: Using root->data without allocation causes error

    Accessing root->data without initialization leads to undefined behavior or crash.
  3. Final Answer:

    root is not initialized with memory before use -> Option B
  4. Quick Check:

    Pointer must be allocated before dereferencing [OK]
Hint: Always allocate memory before using pointer members [OK]
Common Mistakes:
  • Forgetting to allocate memory with malloc
  • Assuming pointer is auto-initialized
  • Confusing syntax errors with runtime errors
  • Misunderstanding pointer vs variable types
5. You want to manually create this binary tree:
    10
   /  \
  5    15
 /    /  \
3    12  20
Which sequence of C statements correctly creates this tree?
hard
A. Create root with 10, root->left with 5, root->right with 15, then root->left->left with 3, root->right->left with 12, root->right->right with 20
B. Create root with 10, root->left with 15, root->right with 5, then root->left->left with 12, root->right->left with 3, root->right->right with 20
C. Create root with 10, root->left with 5, root->right with 15, then root->left->right with 3, root->right->left with 12, root->right->right with 20
D. Create root with 10, root->left with 5, root->right with 15, then root->left->left with 12, root->right->left with 3, root->right->right with 20

Solution

  1. Step 1: Map tree structure to pointers

    Root is 10, left child 5, right child 15. Left child of 5 is 3. Left and right children of 15 are 12 and 20 respectively.
  2. Step 2: Verify pointer assignments match tree

    Create root with 10, root->left with 5, root->right with 15, then root->left->left with 3, root->right->left with 12, root->right->right with 20 correctly assigns left and right pointers to match the tree shape and values.
  3. Final Answer:

    Create root with 10, root->left with 5, root->right with 15, then root->left->left with 3, root->right->left with 12, root->right->right with 20 -> Option A
  4. Quick Check:

    Pointer assignments match tree structure [OK]
Hint: Match tree diagram nodes to left/right pointers carefully [OK]
Common Mistakes:
  • Swapping left and right children
  • Assigning nodes to wrong child pointers
  • Missing some child node assignments
  • Confusing node values with pointer positions
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard