[英]binary search tree insert function c++
我有以下問題。 2年前,我使用C ++進行編碼,現在決定練習這種語言。 我不知道發生了什么,因為編譯器說插入后要訪問root-> data時這是訪問沖突。 可能是我完全忘記了內存分配等編程概念,但請幫助我,我看不到這里的錯誤! 提前致謝!
#define BLACK 0
#define RED 1
using namespace std;
struct Node {
Node* left, *right;
int data;
bool color;
Node(int key) {
data = key;
left = right = NULL;
color = RED;
}
};
struct RBTree {
Node* root;
RBTree() { root = NULL; }
void insertBST(Node* node, int key) {
if (node == NULL) {
node = new Node(key);
}
else {
if (key < node->data) {
insertBST(node->left, key);
}
else {
insertBST(node->right, key);
}
}
}
void insert(int key) {
insertBST(root, key);
}
};
int main()
{
RBTree tree;
tree.insert(10);
cout << tree.root->data;
_getch();
return 0;
}
嘗試這個:
struct RBTree {
Node* root;
RBTree() { root = NULL; }
void insertBST(Node** node, int key) {
if (*node == NULL) {
*node = new Node(key);
}
else {
if (key < (*node)->data) {
insertBST(&(*node)->left, key);
}
else {
insertBST(&(*node)->right, key);
}
}
}
void insert(int key) {
insertBST(&root, key);
}
};
if (node == NULL) {
node = new Node(key);
}
在上面的代碼段中,當根== NULL時,您將創建一個新節點。 但是您沒有將新創建的節點分配給根。 需要通過引用如下。
T obj;
if ( !ptr )
ptr = &obj;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.