如何使用迭代方法在BST中插入节点?

时间:2017-03-21 12:57:38

标签: binary-search-tree

这是我尝试实施的内容

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;   
    }
}

这个解决方案有什么问题。我试图通过遍历

将新节点链接到其理想位置

1 个答案:

答案 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;