- ベストアンサー
「javascript」のプログラミングについて
ヒープ木のプログラムを書くように言われたのですが、全く分からないので教えてください。以下のことを入れるとのことです。 (1)木の高さhのとき、深さh-1までの部分は完全2分木(深さh-2までの接点はすべて2個の子を持ち、葉は深さh-1またはhのみ)、深さhは葉の左詰。 (2)接点vの親uとすると、その要素間には、Xu≦Xv データ構造:配列によるもの A[i]の左の子はA[2i+1]に、右の子はA[2i+2] よろしくおねがいします!
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
宿題ですか? (1)(2)の意味がよく判らないのですけど。 (1)高さと深さを同じ変数で表してるけど、ほんとに同じ意味なんですか? (2)ほとんど何を言いたいのか不明(もっと全体の状況説明が必要) とりあえず以下のところがアルゴリズム的には重要 >データ構造:配列によるもの >A[i]の左の子はA[2i+1]に、右の子はA[2i+2] なぜこの配列になるのか解りますか? まずは手書きで、根っこのi=0から順に実際にデータを入れてみて下さい。 どんなデータをいれるかは、(1)(2)の元になる問題文をもっとよく読み返して下さい。 それを式にして、「同じ事繰り返してる」と思ったら、ループに入れるとプログラムが組み上がっていきますよね。 あとは、「スタック積み上げ」「2分木」で検索掛けてみたら、いろいろ解説サイトが有ると思いますけど。