だから私はちょうどコーメンで赤黒の木を学び、すごい!通常、私はすべてのアルゴリズムとデータ構造を理解して、疑似コードをチートすることなく最初から再構築できるようにします。私はアルゴリズムが本当に好きなので、それらがどのように機能するかを学ぶことを楽しんでいます。通常、1行ずつ行き、コードを見て、何が起こっているのか理解しているかどうかを確認して、いくつかのケースを試します。
何が起こっているのかを理解するだけで、RBツリーにかなりの時間がかかりました。本の説明があっても、コードを理解するのは難しいと感じました。言うまでもなく、回転がどのように/なぜ機能するのか理解できませんでした。直感的ではありません。つまり、3つの(実際には6つの)挿入の場合と、4つの削除の場合ですか?このことを理解することは可能ですか?不正行為をせずにこのコードを再構築することは不可能です。バイナリツリーまでは、いくつかの微調整を行って頭の外にあるものを実装できますが、RBツリーは試してさえいません。つまり、先生でさえ混乱することもあるので、それほど簡単ではないと思いますが、同時に、起こっていることすべてを理解する必要があるのでしょうか、少なくともその理由は何でしょうか?本はしなかった 誰かがどのように回転のアイデアを思いついたのかを本当に説明します。誰かが2回転で挿入の問題を解決できることに気づきましたか?すごい!
私の質問は、本当にRBツリーを100%理解する必要があるのですか?私はそれを完全に理解せずにある種の悪いスキップを感じます。よろしくお願いします!(PS:RB-treeにはタグがなく、実際にはツリーにもタグがなく、バイナリツリーだけなので、アルゴリズムのみを配置します)