Implementando um iterador sobre árvore binária (ou arbitrária) usando C ++ 11

Eu gostaria de criar um iterador sobre a árvore binária, de modo a ser capaz de usar loop baseado em intervalo. Eu entendo que devo implementar a função begin () e end () primeiro.

Comece provavelmente deve apontar para a raiz. De acordo com a especificação, no entanto, as funções end () retornam "o elemento após o último elemento válido". Qual elemento (nó) é esse? Não seria ilegal apontar para algum local "inválido"?

A outra coisa é o operador ++. Qual é a melhor maneira de retornar o "próximo" elemento na árvore? Eu só preciso de alguns conselhos para começar esta programação.

Eu gostaria de expandir / aumentar minha pergunta *. E se eu quisesse iterar sobre uma árvore com uma aridade arbitrária? Deixe cada nó ter um vetor de filhos e deixe começar () aponte para a raiz "real". Eu provavelmente teria que implementar uma fila (por largura de primeiro) dentro da classe iterator para armazenar o unique_ptr para nós, certo? Então, quando a fila estiver vazia, eu saberia que passei todos os nós e, portanto, deveria retornar TreeIterator (nullptr) quando o oprator ++ () for chamado. Isso faz sentido? Eu quero o mais simples possível e só repasso a iteração.

* Ou devo criar um novo tópico?

questionAnswers(3)

yourAnswerToTheQuestion