0
我想輸出二進制搜索樹給定一個數組值。它遵循二進制搜索樹原理。該圖旋轉到左側。
這是所需的輸出:
輸出二進制搜索樹陣列
<6
<5
4<
3<
<2
1<
如何解決呢?
//class Node
class Node {
int value;
Node left;
Node right;
Node(int x) {
value = x;
}
}
//class BST
public class BST {
static int value[] = {3,4,5,6,1,2};
public static Node root;
public static Node insert(int num[], int start, int end) {
if (start > end)
return null;
int mid = (start + end)/2;
Node roots = new Node(value[mid]);
roots.left = insert(value, start, mid - 1);
roots.right = insert(value, mid + 1, end);
display(roots, 0);
return roots;
}
public static void display(Node node, int level){
if(node!=null){
display(node.right, level+1);
System.out.println("");
if(node==root)
System.out.print("Root-> ");
for(int i=0;i<level&&node!=root;i++)
System.out.print(" ");
System.out.print(node.value+"< ");
display(node.left, level+1);
}
}
public static void main(String args[]){
insert(value, 0, 5);
}
}
你不正確地插入值,你最終的樹是不是BST(1在左節點數量更多,但3具有更大的節點在右邊)。 如果你想插入工作,你的數組必須已經排序。 如果你想保持你的值數組未被排序,你需要在插入過程中做旋轉,你應該期待wikipedia或者rosetta代碼以獲得更多信息 – Guillaume
我編輯了我的代碼,你是對的,我必須對它進行排序!我會找到一個關於如何排序的算法。謝謝! – Meryel
使用BST最有趣的部分是知道如何插入隨機值,而不是排序值。在你的情況下,使用排序數組插入值是微不足道的,但你應該嘗試以隨機方式插入值。 – Guillaume