-1
所以我試圖在文件中存儲二叉樹。我正在做這個將它存儲在文件中。在文件中存儲二叉樹
public String[] getTree() {
ArrayList<String> list = new ArrayList();
String[] str;
preOrder(root, list);
str = list.toArray(new String[list.size()]);
return str;
}
private void preOrder(Node current, ArrayList list) {
if (current == null) {
list.add("&");
return;
}
list.add(current.getValue());
preOrder(current.getLeft(), list);
preOrder(current.getRight(), list);
}
基本上每個空節點我表示作爲&,並且每個節點通過線斷裂分離。有了這個數組,我將它發送到文件。現在,當程序再次啓動時,它會讀取該文件並將其放回數組中。然而,我有問題圍繞着這個過程包裹着我的頭,而且我讀的東西似乎都沒有幫助。這是我正在嘗試的當前算法,但它不適用於大型樹。
private void makeBinaryTree(String[] in) {
root = new Node(in[0]);
Node current = root;
boolean left = true;
for(int i = 1; i < in.length; i++){
if(!in[i].equals("&")){
if(left){
Node toAdd = new Node(in[i]);
toAdd.setParent(current);
current.setLeft(toAdd);
current = toAdd;
}else{
Node toAdd = new Node(in[i]);
toAdd.setParent(current);
current.setRight(toAdd);
current = toAdd;
left = true;
}
/* }else if(left && in[i].equals("&")){
left = false;
*/}else if(!left && in[i].equals("&")){
left = false;
current = current.getParent();
current = current.getParent();
}else if(i+1 >= in.length){
}else if(in[i].equals("&") && in[i+1].equals("&")){
current = current.getParent();
left = (!left);
i++;
}
}
}
感謝您的幫助。