查看 Wikipedia 上的实现,似乎标准 BST(非自平衡)在插入期间从不重新排列自身,因此添加的第一个项目将始终是根。它是否正确?如果是这样,这是否意味着 BST 有可能经常比 O(logN) 差得多?
使用它作为递归插入的参考:
/* Inserts the node pointed to by "newNode" into the subtree rooted at "treeNode" */
void InsertNode(Node* &treeNode, Node *newNode)
{
if (treeNode == NULL)
treeNode = newNode;
else if (newNode->key < treeNode->key)
InsertNode(treeNode->left, newNode);
else
InsertNode(treeNode->right, newNode);
}