2011-12-06 10 views
0

私はバイナリツリーとバイナリ検索ツリーを探して半日を過ごしましたが、私の周りに私の頭を置くことはできません。私が見てきたすべての読書は、概念的にはむしろ混乱しており、現実世界の例はありません。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を簡単に説明できる方法はありますか?将来の検索のために

答えて

0

私は非常によく基本的なレベルでそれを説明して2003年から、この古い記事を見つけました。

Page 3ツリーを歩き、既存の親を参照として左右の値を各アイテムに割り当てるPHP関数もあります。

http://www.sitepoint.com/hierarchical-data-database/

関連する問題