我需要做一個方法,將一個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個作爲4的左邊。我的不好。謝謝你, – KarelG