这是我尝试实施的内容
struct bstnode* insert(struct bstnode* root, int data){
struct bstnode* temp = getnewnode(data);
struct bstnode* temp1=root;
while(1){
if(temp1 == NULL){
temp1 = temp;
if(root == NULL) root = temp;
return root;
}
else if(data<=temp1->data)
temp1 = temp1->left;
else
temp1 = temp1->right;
}
}
这个解决方案有什么问题。我试图通过遍历
将新节点链接到其理想位置答案 0 :(得分:0)
要创建BST,新节点temp
应作为temp1->left = temp;
附加到左侧分支,或temp1->right = temp;
附加到右侧分支。
第1步 - 在搜索左侧分支之前,检查是否为NULL并分配新节点。
else if(data<=temp1->data) {
// check the left node
if (temp1->left==NULL) {
// attach the new node to left
temp1->left = temp;
return (root);
}
// otherwise continue
temp1 = temp1->left;
}
而不是:
else if(data<=temp1->data)
temp1 = temp1->left;
第2步 - 同样检查右分支。
else {
// check the right node
if (temp1->right==NULL) {
// attach the new node to right
temp1->right = temp;
return (root);
}
// otherwise continue
temp1 = temp1->right;
}
而不是:
else
temp1 = temp1->right;