dimanche 6 novembre 2022

C++ Tree node recursion

How does the recursion work for the function provided?

struct tree
{
    int value;
    struct tree* left;
    struct tree* right;
};

void recursion(tree* head)
{
    if (head != NULL)
    {
        recursion(head->left);
        cout << head->value << endl;
        recursion(head->right);
    }
}

int main()
{
    tree* head;
    
    tree* newNode = new(struct tree);

    newNode->value = 2;
    newNode->left = NULL;
    newNode->right = NULL;

    head = newNode;

    newNode = new(struct tree);
    newNode->value = 1;
    newNode->left = NULL;
    newNode->right = NULL;

    head->left = newNode;

    newNode = new(struct tree);
    newNode->value = 3;
    newNode->left = NULL;
    newNode->right = NULL;

    head->right = newNode;

    recursion(head);

    return 0;

}

Traversing through the tree node with the recursion() function, during recursion(head->left) inside the function, when it finally hits NULL does the end of that state of recursion become 'head->value' and use the cout << head->value << endl; line of code to print 1? Vice versa for recursion(head->right)? I'm having a hard time understanding how exactly the last left node is being printed granted i'm only using cout for the head->value node.

Aucun commentaire:

Enregistrer un commentaire