我不知道我在做什麼錯。我有3個函數來將數據從兩個二叉樹存儲到數組中。我的問題如下:一切工作正常的ARR2,但不是ARR1。有誰知道如何解決這個問題?幫助將不勝感激!數組的二叉樹:插入數組的錯誤值
編輯:第一個數組看起來像它也包含來自arr2和一些隨機數的值。
第一個函數創建數組並調用treeToArray。
void merge(Node* n1, Node* n2){
int l1 = getTreeSize(n1);
cout << "array size " << l1 << endl;
int *arr1 = new int[l1];
int i = 0;
treeToArray(n1, arr1, i); //This array is not filled how it's supposed to be.
int l2 = getTreeSize(n2);
cout << "array size " << l2 << endl;
int *arr2 = new int[l2]; //corrected this, thanks!
int j = 0;
treeToArray(n2, arr2, j);
for(int i = 0; i < l1; ++i)
cout << "array" << arr1[i] << " ";
merge(arr1, arr2, l1, l2);
}
treeToArray應該樹的數據存儲到所述陣列。
void treeToArray(Node* n, int values[], int index) {
if(n == NULL)
return;
if(n->left != NULL)
treeToArray(n->left, values, index);
cout << "speichere " << n->data << endl;
values[index] = n->data;
index++;
if(n->right != NULL)
treeToArray(n->right, values, index);
}
getTreeSize返回樹的大小。
int getTreeSize(Node* n) {
if(n == NULL) {
return 0;
} else {
return (getTreeSize(n->left) + getTreeSize(n->right) + 1); //
}
}
您確定要在'merge'函數中使用'int * arr2 = new int [3];'嗎? – pkacprzak
謝謝!它必須是l2,這是n2的大小。但問題沒有解決。 – tyso89
'n1'和'n2'是什麼? – Steve