Traverse levels selecting nodes meeting a predicate | Meta Interview Question