void Insert(AVLnode * & root, string X)
{
if ( root == NULL)
{
root = GetNode(X);
}
else if ( root->info > X )
{
Insert(root->left,X);
if ( height(root->left) - height(root->right) == 2 )
if ( X < root->left->info )
RotateRR(root);
else
RotateLR(root);
}
else if ( root->info < X )
{
Insert(root->right,X);
if ( height(root->right) - height(root->left) == 2 )
if ( X > root->right->info )
RotateRR(root);
else
RotateLR(root);
}
root->height = max( height(root->left), height(root->right) )+1;
}
AVLnode* find(AVLnode* root,string X)
{
if (!root) return 0;
if ( root->info == X )
return root;
else if (root->info < X)
find(root->left,X);
else if (root->info > X)
find(root->right,X);
return 0;
}
int main(int argc,char* argv)
{
AVLnode* Dic;
Insert(Dic,"adf");
return 0;
}
第一次在 Insert
中,root
为 NULL,但当我调试时,它会跳过 root == null
。怎么回事?
最佳答案
问题出在 main()
的 AVLnode* Dic;
语句中。您正在从 main()
向 insert()
发送一个未初始化的指针。它包含垃圾值。将其初始化为 NULL
关于c++ - NULL 指针问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1781182/