- プログラムに詳しくなりたい
685 :デフォルトの名無しさん[]:2015/06/23(火) 05:49:38.88 ID:R6uigDGX - ある部分を切り出すと、入れ子のバランスが崩れるように見えます。
このバランスの修正は、切り出す部分を一回なめるだけで出来ます。 切り出す部分に対して要素のスタートが有ればスタックにプッシュ。 要素の終わりがあればポップします。 バランスが崩れているのですから、ポップしようとしたら空だったという場合があります。 この時、バランスが崩れていることを検出できるのです。 そして切り出す区間の終わりでスタックに要素が残っている場合があります。 これもまたバランスが崩れている部分です。 ポップできない要素は、切り出す区間の先頭に修正が必要なノードです。 スタックに残った要素は切り出す区間の末尾に付け加える要素です。 直列化してあるので、単純に付け加えるだけで修正が完了します。
|