C ++迭代插入到二叉搜索树BST中

时间:2014-05-13 22:07:35

标签: c++ insert binary-search-tree iteration

只要项目较小并因此插入左侧,我的功能就会起作用,但是当它应该向右移动时,似乎没有任何事情发生。它没有崩溃或任何事情,它只是没有插入。

我不明白这是怎么发生的,因为在任何一种情况下,代码中唯一不同的是左边或右边的单词(据我所见)。有经验的人有什么明显的东西吗?

template <typename T>
void BST<T>::insertHelper(BST<T>::BinNodePtr &subRoot, const T& item)
{
  BinNode *newNode;
  BinNode *parent;
  BinNode *child;

  newNode = new BinNode;
  newNode->data = item;
  // newNode->left = NULL;
  // newNode->right = NULL;

  parent = subRoot;
  child = subRoot;

  if (!subRoot){
    subRoot = newNode;
  } else {

    if (item < child->data){
      child = child->left;
    } else if (item > child->data){
      child = child->right;
    }
    while (child){
      parent = child;
      if (item < child->data){
        child = child->left;
      } else if (item > child->data){
        child = child->right;
      }
    }
    child = newNode;
    if (child->data < parent->data)
      parent->left = child;
    else if (child->data < parent->data)
      parent->right = child;
  }
}

1 个答案:

答案 0 :(得分:3)

你的上一个'if'和'else if'具有相同的条件。第二个应该是'&gt;'