Picture the following scene: you are in a job interview, and the interviewer defines a tree-based data structure and asks you to traverse it. You do a good quick job, maybe using recursion:
// provided by the interviewer: nonempty rose trees carrying the values on the internal nodes
interface ITree<x> {
value: x;
children: Array<ITree<x>>;