Question

Consider the following C++-like pseudo-code for a binary tree traversal:     ```cpp     struct Node {         int data;         Node left;         Node right;     };     void trickyTraversal(Node root) {         if (root == nullptr) {             return;         }         if (root->left != nullptr) {             trickyTraversal(root->left);         }         std::cout data right != nullptr) {             trickyTraversal(root->right);         }     }     ```     Given the following binary tree:     ```           10          /  \         5    15        / \    /       2   7  12     ```     What will be the output of `trickyTraversal(root)` where `root` points to the node with data `10`? 

A `2 5 7 10 12 15` Correct Answer Incorrect Answer
B `10 5 2 7 15 12` Correct Answer Incorrect Answer
C `2 7 5 12 15 10` Correct Answer Incorrect Answer
D `10 5 15 2 7 12` Correct Answer Incorrect Answer

Solution

The `trickyTraversal` function is an Inorder Traversal.            It first recursively visits the left child.            Then it prints the current node's data.            Then it recursively visits the right child.         This is the definition of an Inorder Traversal.         For the given tree:         ```               10              /  \             5    15            / \    /           2   7  12         ```         Inorder traversal: Left -> Root -> Right         1.  `trickyTraversal(10)`             1.1. `trickyTraversal(5)`                 1.1.1. `trickyTraversal(2)`                     1.1.1.1. `trickyTraversal(nullptr)` -> return                     1.1.1.2. Print `2`                     1.1.1.3. `trickyTraversal(nullptr)` -> return                 1.1.2. Print `5`                 1.1.3. `trickyTraversal(7)`                     1.1.3.1. `trickyTraversal(nullptr)` -> return                     1.1.3.2. Print `7`                     1.1.3.3. `trickyTraversal(nullptr)` -> return             1.2. Print `10`             1.3. `trickyTraversal(15)`                 1.3.1. `trickyTraversal(12)`                     1.3.1.1. `trickyTraversal(nullptr)` -> return                     1.3.1.2. Print `12`                     1.3.1.3. `trickyTraversal(nullptr)` -> return                 1.3.2. Print `15`                 1.3.3. `trickyTraversal(nullptr)` -> return         Output: `2 5 7 10 12 15`

Practice Next
ask-question