詳しくは参照して下さい。特定のノードから見て、親と二つの部分木を持つ構造をクラス表現した物。ノード毎に値が割り振られているとする。関数ではそのように二分探索木を再帰的に作るような関数になってます。二分探索木を通りがけ順に探索すると、各ノードの値を大きさ順(あるいは逆順)に得ることができる。関数では昇順、降順を選んでソート出来るようになってます。アルゴリズムの解説がメインじゃないのでこんな感じで。属性オプションこれはいわゆる初期化済みか否かを指定したメソッド名で取れるようになるってオプションです。メソッドが生えるって事ですね。循環参照オブジェクトを作る際は必須ですね。値として参照されてしまうので問題になっちゃうので、毎回新たに生成する事を保障する為にそうしているみたいです。属性オプションは使えません。何かって言えば、実際に値が突っ込まれるまでは初期化を遅らせるって事です。再帰的に呼び出す際にも省エネなんだぜって事ですな。