-1
我基本上試圖在我的樹中插入一個數字。最初我傳遞命令insert(root,10),然後我的函數遞歸遍歷樹插入值。遍歷正常,但我的樹不會更新。我已經通過構造函數在此類中構建了一棵樹。在插入函數爲{0,1,2,3,4,5,6,7,8,9}之前,我的樹的順序遍歷以及在插入之後的相同遍歷爲什麼這個插入函數不會更新我的二叉搜索樹?
我的插入功能:
private:
node* root
void insert(node* ptr, int num) {
if (ptr == NULL) {
ptr = new node;
ptr->data = num;
ptr->left = NULL;
ptr->right = NULL;
return;
}
else if (ptr->data >= num) {
insert(ptr->left, num);
}
else if (ptr->data < num) {
insert(ptr->right, num);
}
}
我的類的私有成員創建初始樹
node* createTree(int array[], int start, int end) {
if(start > end) {
return NULL;
}
int mid;
node* newNode = new node;
if (((start + end) % 2) != 0) {
mid = ((start + end)/2) + 1;
}
else {
mid = (start + end)/2;
}
newNode->data = array[mid];
newNode->left = createTree(array, start, mid - 1);
newNode->right = createTree(array, mid + 1, end);
cout << newNode->data << " " << newNode << endl;
return newNode;
}
構造
BST(int array[], int length) {
root = createTree(array, 0, length - 1);
}
顯示'node'的聲明將有所幫助。見[mcve]。 – nwp
如果'ptr'是'nullptr',你將分配一個新的'node',然後泄漏內存,因爲'insert'返回後新的'node'不可訪問。 – nwp
那麼我應該如何去解決這個問題呢?我是新來的編碼和這個網站。我覺得自己喜歡在這個網站上投票,而不是幫助他們投票選舉新人。 – aashman