BSTを文字列に変換するメソッドを作成する必要があります。各子にはインデント文字が前に付いています。バイナリ検索ツリーから文字列へ
例:
BinaryTreeSet set=new BinaryTreeSet();
set.add(6);
set.add(4);
set.add(3);
set.add(5);
set.add(9);
set.add(10);
set.add(8);
set.add(0);
System.out.println(set.treeString());
が
=> 6
=> 4
=> 3
=> 0
=> 5
=> 9
=> 8
=> 10
を生成する必要があります私は今、数時間のために試してみました、しかし、私はどんな進歩を遂げることはありません。
私が得ることができる最高のは、次のコードで
=> 6
=> 0
=> 3
=> 5
=> 4
=> 8
=> 10
=> 9
た:また、私は上の本当のアイデアを持っていない ...
public String treeString() {
StringBuilder builder = new StringBuilder("=> " + root);
builder.append(System.getProperty("line.separator"));
nodeString(root, builder);
return builder.toString();
}
private void nodeString(BinaryTreeNode node, StringBuilder builder) {
if (node == null) {
return;
}
if (node.left != null) {
nodeString(node.left, builder);
builder.append("=> " + node.left);
builder.append(System.getProperty("line.separator"));
}
if (node.right != null) {
nodeString(node.right, builder);
builder.append("=> " + node.right);
builder.append(System.getProperty("line.separator"));
}
}
どういうわけか私は正しい順序を取得する方法を見つけ出すカントインデントを適切にする方法。
ありがとうございます!
あなたの例(値を追加するとき)あなたはBSTを使用している場合は所望の出力を対応していません。 'set.add(6); set.add(4); set.add(3); 'はルートとして6、左の葉として4、右の葉として3を生成する必要があります... – KarelG
次に、BSTの別の定義を学びました! 私たちは、左の子は親よりも小さくする必要があり、右は大きくする必要があるということです。 ありがとうとにかく、私はそれが働いている! – schoeni
@shoeniまあ...あなたは正しい。私は別の木を念頭に置いている。 'set.add(6);を使用します。 set.add(4); set.add(3); 'はBSTで実際にはルートを6、左を4、左を3とします。 – KarelG