我有一个问题,我的二叉树中的项目被错误地插入。我在每个节点中插入字符串。我想我可能做错了什么,因为似乎我总是以错误的树结束。IE
甲、乙、丙
我应该
B
/ \
A C
但不知何故,我最终得到了这样的结果:
C
/ \
B A
或根据我在树中插入的顺序而有所不同。
这是我的树类:
这是我的插入方法和插入辅助方法。你能看看我做错了什么吗?提前致谢。
void BinarySortTree::insert(string key)
{
if(root != NULL)
{
insert(key, root);
}
else
{
root = new TreeNode;
root->item = key;
root->left = NULL;
root->right = NULL;
}
}
void BinarySortTree::insert(string key, TreeNode *node)
{
bool done = false;
while(!done)
{
if(key.compare(node->item) < 0)
{
if(node->left != NULL)
{
node = node->left;
}
else
{
node->left = new TreeNode;
node->left->item = key;
node->left->left = NULL;
node->left->right = NULL;
done = true;
}
}
else if(key.compare(node->item) > 0)
{
if(node->right != NULL)
{
node = node->right;
}
else
{
node->right = new TreeNode;
node->right->item = key;
node->right->left = NULL;
node->right->right = NULL;
done = true;
}
}
else if(key.compare(node->item) == 0)
{
done = true;
}
}
}