My tree looks like this, a tree which at each node can or cannot have an integer:

```
data Tree = Empty | Node (Maybe Integer) Tree Tree deriving Show

```

I want to sum all the values in the tree, not including Nothing values and if tree is not empty but has only Nothing values, just return Nothing, or empty tree is 0. These cases I understand how to.

I want thinking depth first traversal would be best, or just some basic traversal in general, but struggling on how to implement it elegantly. 

treeValues :: Tree -> Maybe Integer