Ruby (Ruby on Rails) を使用しており、ネストされた約 2000 ノードのセットがあります。各ノードは 2 つの子のみを持つことができます。
各レベルにいくつのノードがあるかを判断する最良の方法は何ですか? これを行うには、兄弟を探してツリー全体をクロールする必要がありますか?
ありがとう!
Ruby (Ruby on Rails) を使用しており、ネストされた約 2000 ノードのセットがあります。各ノードは 2 つの子のみを持つことができます。
各レベルにいくつのノードがあるかを判断する最良の方法は何ですか? これを行うには、兄弟を探してツリー全体をクロールする必要がありますか?
ありがとう!
ActiveRecord には counter_cache という属性があり、このような場合のために特別に作成されています。Ryan Bates によるCounter Cache Columnのスクリーンキャストを確認してください。
私は実際にこれを行うための「迅速な」方法を考え出しました。このページ (リンク テキスト) の「サブツリーの深さ」のセグメントを使用して、指定された SQL と find_by_sql を使用して深さをポーリングしています。次に、返されたモデルの結果を繰り返し処理し、各深度値が発生する回数を数えます。よく働く!見てくれて、助けてくれてありがとう!