2017-01-15 7 views
-1

リストに基づいてバイナリツリーを作成しようとしています。リストには、インデックス0にノードが、インデックス1と2に左右の子が含まれています。索引3では別のノードがあり、索引4では5が、索引3のノードでは左と右の子となります。私はこのようなものを試しましたJavaのリストからバイナリツリーを作成する

public static HNode buildHTree(List<HNode> list) { 
     HNode node = lista.get(0); 
     HNode left = lista.get(1); 
     HNode right = lista.get(2); 
     list.remove(0); 
     list.remove(0); 
     list.remove(0); 
     if(list.size() > 0) 
      return buildHTree(list); 
     return node; 
    } 

これは動作しません。あなたの中には、これを作る上でのヒントや助けてくれますか? HNODEクラスが含まれています。このため

private Symbol value; 
private HNode left, right; 

とセッターとゲッター。 ありがとうありがとうございます

+3

※これは機能しません。*問題の説明ではありません。私たちの同情や援助をしたいですか? – shmosel

+0

私は自分の思考に何が間違っているのか、自分の目標を達成するために自分のコードをどのように変更できるのかを教えたい。 – Lucy

+1

ようこそスタックオーバーフロー!宿題の助けを求めているようです。それ自体に問題はありませんが、これらのことを守ってください(http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845)、それに応じて質問を編集してください。 –

答えて

2

私の考えは間違っていると私の目標を達成するために私のコードを変更することができます教えてください。

あなたの思考に間違いがあることは、あなたが「いくつかのコード」を書いてそれを正しいものにすることができると考えるように思えることです。それはプログラムする良い方法ではありません。

より良い/正しい方法は、以下のとおりです。あなたが設計を開始する前に

  1. あなたが問題に遭遇し、読んで、あなたはそれをコーディングを始める前に、
  2. アルゴリズムを理解し、要件を理解あなたが書いたコードと実際に何を理解しようとしています。あなたが達成しようとしているものと比較してください。つまり、は、と書くことを意図しています。

また、物を捨てて、もう一度やり直すことを恐れないでください。


具体的なヒント:

  1. あなたはList<HNode>からスタートすべきか?実際にはList<Symbol>ではありませんか?
  2. 左/右のフィールドを設定してノードをツリー構造にしてはいけませんか?
  3. リストがソートされているかどうか知っていますか?
関連する問題