I want to try to use lambda functions (which I do not understand well) so I can learn more about them. I have an assignment on trees that has us making a family tree class.

`children`

is a set of all of the children nodes to this node.

/** = the number of nodes in this H1N1Tree. * Note: If this is a leaf, the size is 1 (just the root) */ public int size() { // TODO 2. This method must be recursive. if (children.size() == 0) return 1; AtomicInteger sizeOfChildren = new AtomicInteger(); children.forEach(p -> {sizeOfChildren.addAndGet(p.size());}); return sizeOfChildren.get(); }

Also as a side question, does this usage of `AtomicInteger`

work similarly to making just an `int sizeOfChildren`

, then running the lambda function with a C++ pointer to `sizeOfChildren`

?

## Answer

Yes you can, but it doesn’t look very nice. I think I would solve it with a stream instead.

public int size() { if (children.size() == 0) return 1; return children.stream().mapToInt(c -> c.size()).sum(); }