这个功能有什么问题

时间:2010-12-23 09:42:09

标签: c++ binary-search-tree

喜 我正在编写BST并编写了以下函数来添加Child。

void addChild(T value)  
{  
  temp = root;  
  while(0 != temp)  
  {  
     temp1 = temp;  
     if(value  > temp->getValue())  
          temp = temp->getRightChild();   
      else  
           temp = temp->getLeftChild();  
  }  
  if(temp1->getValue() > value)  
  {   
       temp1->setRightChild(new Child(value));  
  }  
  else  
  {  
       temp1->setLeftChild(new Child(value));  
  }  
}  

我将“23 12 122 1 121 15”作为输入。 Root是我在类的构造函数中创建的节点23。

问题:当我进行树遍历时,我只得到23和15作为输出。 问题:我在这个函数中做错了什么?

3 个答案:

答案 0 :(得分:1)

尝试:

if(value > temp1->getValue()) 

...否则您的插入条件与您在上面的循环中搜索某个地点不同。

答案 1 :(得分:1)

条件混乱。

if(value> temp-> getValue()):getRight

相反

if(temp1-> getValue()> value):setRight

尝试更改最后一个条件。

答案 2 :(得分:0)

我同意船长和先生的先前答案,但他们没有解释严重的,如果我们说,你的树的人口不足。可能的问题是您将添加为 temp1 的子项,完全丢弃以前的子项。这可能是在T :: setRightChild()和T :: setLeftChild()函数中完成的。