私はバイナリツリーとバイナリ検索ツリーを探して半日を過ごしましたが、私の周りに私の頭を置くことはできません。私が見てきたすべての読書は、概念的にはむしろ混乱しており、現実世界の例はありません。parent_id関係のある既存のロケーションテーブルからバイナリツリーを作成する
私は、地理的な場所のテーブルを持つMySQLとPHPシステムを継承しました。これは本質的に階層的であり、すべてのレコードはparent_idフィールドを介して直接の親にリンクされています。
ニュージーランド - >北島 - >オークランド - >オークランド市
この表には、すでに入力された「lft」と「rgt」という2つのフィールドもあります。私の仕事は、このテーブルをより多くの(そして変更された)地理的な場所で変更することで、これらのlft値とrgt値を更新することです。
子ノードのlftとrgtの値を見て、SELECT * FROM table WHERE lft < = child_leftとrgt> child_rgtの結果を照会すると、私は祖先の連鎖を取得することを理解しています。
しかし、私はこの論理を理解していません。私はこれらのlftとrgtの値をレコードに割り当てることの背後にある理論には従いません。彼らは確かにレコードそのものの一意なIDとは何の相関関係もないようです。
例を挙げて私にまともなリソースを教えてもらえますか?または、BSTを簡単に説明できる方法はありますか?将来の検索のために