当我尝试在 main 中调用插入函数时,它没有取数字?
when i try to call insert function in main it is not take the numbers?
eleman* insert( eleman* agac, int eklenecekDeger)
{
// ağacımız tamamen boş ise
if (agac == NULL)
{
// kökümüzü oluşturuyoruz
eleman* kok = (eleman*)malloc(sizeof(eleman));
// kökümüzün sağı ve solunu boş olacakları için NULL yapıyoruz
kok->right = NULL;
kok->left = NULL;
// eklenecek değerimizi ekliyoruz
kok->key = eklenecekDeger;
cout << eklenecekDeger<<endl;
// ve yeni kök değerimizi geriye döndürüyoruz
return kok;
}
// eklenecek değer kökten büyükse sağ alt ağaca geçip
// fonksiyonumuzu orada tekrar işliyoruz (özyineleme)
if (agac->key < eklenecekDeger)
{
agac->right = insert(agac->right, eklenecekDeger);
}
else // değer kökten küçükse sol alt ağaca geçiyoruz
{
agac->left = insert(agac->left, eklenecekDeger);
}
cout << "eklenen eleman" ;
// ağacımızın son halini geriye döndürüyoruz
return agac;
}
当我像这样在 main 中调用它时,此函数用于将新数字插入二进制文件 tree.But
int dizi[MAXSIZE];
for (int i = mystack.top; i >= 0; i--) {
//dizi[i] = pop();
//insert(agac, dizi[i]);
insert(agac, pop());
inorder(agac);
}
它不是 working.This 程序将从堆栈中取出数字并将它们放入二叉树中。
您的函数运行正常。
可以注意到插入 returns 一个新头。
并且在测试中你没有存储它!
它应该是这样的:
for (int i = mystack.top; i >= 0; i--) {
//dizi[i] = pop();
//insert(agac, dizi[i]);
agac = insert(agac, pop());
inorder(agac);
}
在 C++ 中,应使用 new
而不是 malloc
。
如果这是 C++ 11,那么函数应该使用 nullptr
而不是 NULL
。
像这样:
if (agac == nullptr)
{
eleman* kok = new eleman;
kok->right = nullptr;
kok->left = nullptr;
kok->key = eklenecekDeger;
cout << eklenecekDeger << endl;
return kok;
}
eleman* insert( eleman* agac, int eklenecekDeger)
{
// ağacımız tamamen boş ise
if (agac == NULL)
{
// kökümüzü oluşturuyoruz
eleman* kok = (eleman*)malloc(sizeof(eleman));
// kökümüzün sağı ve solunu boş olacakları için NULL yapıyoruz
kok->right = NULL;
kok->left = NULL;
// eklenecek değerimizi ekliyoruz
kok->key = eklenecekDeger;
cout << eklenecekDeger<<endl;
// ve yeni kök değerimizi geriye döndürüyoruz
return kok;
}
// eklenecek değer kökten büyükse sağ alt ağaca geçip
// fonksiyonumuzu orada tekrar işliyoruz (özyineleme)
if (agac->key < eklenecekDeger)
{
agac->right = insert(agac->right, eklenecekDeger);
}
else // değer kökten küçükse sol alt ağaca geçiyoruz
{
agac->left = insert(agac->left, eklenecekDeger);
}
cout << "eklenen eleman" ;
// ağacımızın son halini geriye döndürüyoruz
return agac;
}
当我像这样在 main 中调用它时,此函数用于将新数字插入二进制文件 tree.But
int dizi[MAXSIZE];
for (int i = mystack.top; i >= 0; i--) {
//dizi[i] = pop();
//insert(agac, dizi[i]);
insert(agac, pop());
inorder(agac);
}
它不是 working.This 程序将从堆栈中取出数字并将它们放入二叉树中。
您的函数运行正常。
可以注意到插入 returns 一个新头。 并且在测试中你没有存储它!
它应该是这样的:
for (int i = mystack.top; i >= 0; i--) {
//dizi[i] = pop();
//insert(agac, dizi[i]);
agac = insert(agac, pop());
inorder(agac);
}
在 C++ 中,应使用 new
而不是 malloc
。
如果这是 C++ 11,那么函数应该使用 nullptr
而不是 NULL
。
像这样:
if (agac == nullptr)
{
eleman* kok = new eleman;
kok->right = nullptr;
kok->left = nullptr;
kok->key = eklenecekDeger;
cout << eklenecekDeger << endl;
return kok;
}