I have this code to remove a Binary Tree from memory but I don't know how the stack would look or how the recursion works when you make the recursive calls to `destroy(<#node* tree#>)`. I know that the recursion ends when you reach the end of a branch and so concludes that call and starts going up in the recursion, but if a recursive function call keeps where it left off, is the call to `destroy(tree->right)` waiting to be executed while `destroy(tree->left)` finishes? 

```
struct node{
    int value;
    node* left;
    node* right;
};

void destroy(node* tree){
    if(tree != NULL){
        destroy(tree->left);
        destroy(tree->right);
        delete tree;
    }
}

```