簡體   English   中英

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

[英]C++ iterative insert into binary search tree BST

只要項目較小並因此插入左側,我的功能就會起作用,但是當它應該向右移動時,似乎沒有任何事情發生。 它沒有崩潰或任何東西,它只是沒有插入。

我不明白這是怎么發生的,因為在任何一種情況下代碼中唯一不同的是左邊或右邊的單詞(據我所見)。 有經驗的人有什么明顯的東西嗎?

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

你的最后一個'if'和'else if'具有相同的條件。 第二個應該是'>'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM