喜 我正在编写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作为输出。 问题:我在这个函数中做错了什么?
答案 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()函数中完成的。