二分木とはデータ構造の一種です。枝がふたつの木のことです。本当に木というわけではないです。これを使えば高速で検索したり二分探索が使えたりします。
どういうこと
wikiみてたら発見しました。ポイントは血縁関係です。まず、自分がいます。自分の親と子がいます。ここまでならただの二分木なのです。しかし、実際には兄弟がいる場合があります。そのため、枝をふやさなくてはなりません。しかし、頭のいい誰かはかんがえました。「2つあるなら1つは兄弟用、もう1つは子供用でいいんじゃね?」
解説
つまり、母ーマリオ、ルイージー子と考えるのです。すると母から伸びた枝はマリオにのみつながります(マリオとルイージは入れ替え可です)。次にマリオからルイージに枝がのびます。最後にマリオから子に枝がのびます。これでなんと家系図ができました。え?嫁?…(必要なかったから考えてなかった…)がんばってください。
応用
これでなにができるのかというと、レシピです。例えば「ギターはネックとボディーでできている(ということにしてください。説明のために)」「ネックは木と金属の棒でできている」「金属の棒は金属でできている」…みたいな具合のものが二分木で表現できます。
どうつかったの?
上の説明まんまでIngredients calcに使いました。
終わりに
やはり論理をたてることはプログラミングの大事な要素のひとつですね。これからがんばっていきたいです。