現在、ランダムな0と1からなる文字列のarrayListで作成されたツリーを刺激するプログラムに取り組んでいます。 各ノードに格納できる値の上限とルート常に最初のnode.size値で満たされます。その後の値は、左または右の子に移動する必要があります(0または1の値に応じて異なります)。0 =左1 =右。ツリーが成長すると、各レベルはツリーの高さのインデックスで評価されます。arrayListツリーのソートとバイナリコードの文字列の追加
ノードクラス
public class Node {
public ArrayList<String> elements;
public Node leftC;
public Node rightC;
private String data;
int size = 5; //size limit of the Arraylist in each node
public Node(s){
elements = new ArrayList<String>();
elements.add(s);
}
public void addString(String s){
elements.add(s);
}
}
Treeクラス
public void insert(String s){
root = insert(root,s);
}
private Node insert(Node n, String s){
if (n == null){
n = new Node(s);
} else if (!n.isFull()){
n.addString(s);
} else {
if (s.charAt(0) == '0'){
n.leftC = insert(n.leftC,s);
} else if (s.charAt(0) == '1'){
n.rightC = insert(n.rightC,s);
}
}
return (n);
}
編集: 私はアドバイスを取り、これを行うには再帰関数を実装し、入力いただきありがとうございます。 ツリーは、ソートの今働いている...それは適切にArrayListに最初Node.size値を追加し、そこに残りの部分を送信します0または1
Example:
Root node:
[1011001001, 1011101101, 1111011011, 1011011101, 0101111011]
Left Child Node [0111001000, 0111111111, 0010101010, 0100000000, 0011010000]
Right Child Node [1111011111, 1011010110, 1001101000, 1000001110, 1110000000]
に基づいて子どもたち、私が実行しているが、これは、新しい問題に、私は完全に立ち往生している。
私はこれらの新しいノードのLとRの子を評価するために行けば...それはのcharAtインデックス0の値を評価し続けているため、それが唯一の三角形の木
right child @ right [1100000011, 1100000000, 1011100000, 1011011011, 1010101010]
left child @ right - none
right child @ left - none
left child @ left [0010010101, 0010101011, 0110000100, 0011000000, 0010110111]
に私の質問を作っているようです私は木の高さに関連して評価されるcharAtインデックスを作成するにはどうすればいいですか?例えば
..私のツリーは次のようになり最初の後に正しくノードの次の層を行われていた場合、我々は進むと木がでいっぱいになるように
right child @ right [1100000011, 1100000000]
left child @ right [1011100000]
right child @ left [0110000100, 0111001000]
left child @ left [0010010101, 0010101011, 0011000000,0010110111,0001110000]
(のcharAtインデックス1ではなく0を評価します)各ノードでは、@ 3番目のインデックスなどを評価します。 これを実装する方法がわかりません。
この質問とコードを調べることは本当に面倒です。 http://sscce.org/ – bragboy
から提案された基準から質問をしてください。問題はないようですが、 'size' * final *を実行すると誤ってその値を変更する可能性がなくなります。 –
Tree.treeInsertにすべてのロジックを持つべきではありません。ルートノードの作成以外は、Node.addString内にすべて存在する必要があります。 addStringに追加のパラメータで深さを伝えることができます。 –