I'm trying to figure out how to plot the run of this code onto a recursion tree, because im not quite sure how it operates, even when I'm debugging.
what each yield is doing and why do I need them both?

Ive tried creating a somewhat tree that connects each run to its next recursively but I dont know what follows yield.data where the head is 'c'

```py
class Node:
    def __init__(self, data, next=None):
        self.data = data
        self.next = next

def get_reverse_iterator(head):
    if head.next:
        for datum in get_reverse_iterator(head.next):
            yield datum
    yield head.data

lst = Node('a', Node('b', Node('c')))
for x in get_reverse_iterator(lst):
    print(x)

```

the result should be:
c
b
a