3

一般的なツリーに対して反復子を定義したいと思います。バイナリ 1 の例 (ウィキペディアから) を次に示します。

イテレータを使用すると、このツリー構造を順番にたどることができます。std::stack を使用して簡単に実現できます (スタックからノードを取得し、現在のものとして設定し、その子をスタックに追加します)。

しかし、「後方」にあるノードも取得したいと思います。

サンプル画像のノードは、次の順序で訪問する必要があります: F、B、A、B*、D、C、D*、E、D*、B*、F*、G、I、H

「*」 - ノードが逆方向にアクセスされることを意味します。

Iterator は、それが「通常の」訪問であるか、逆方向の訪問であるかの情報も格納する必要があります。

それを処理するには、どのようなアプローチをとりますか?

4

0 に答える 0