当我尝试在 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;
}