簡體   English   中英

C ++中的二叉樹

[英]Binary Tree in C++

我正在嘗試在C ++中實現一個二叉樹,並以root-left-right的方式進行橫向處理。 添加所有節點后,我在此行崩潰:

cout << r->st->st->info << endl; //trying to print root->left->left->info

我的RSD函數不打印任何內容。 另外,我將感謝任何有關如何使用調試器的Visual Studio教程。 謝謝。

#include<iostream>
using namespace std;

struct Nod{
    int info;
    Nod *st, *dr;
};

int read_tree(Nod *r)
{
    int info;
    cout << "Info: "; cin >> info;
    if (info!=0)
    {
        r = new Nod;
        r->info = info;
        read_tree(r->st);
        read_tree(r->dr);
    }
    else
        return 0;
}

void RSD(Nod *r)
{
    if (r != NULL)
    {
        cout << r->info << " ";
        RSD(r->st);
        RSD(r->dr);
    }
}

int main()
{
    Nod *r = NULL;
    read_tree(r);
    system("Pause");
    cout << r->st->st->info << endl;
    cout << r->dr->info;
    RSD(r);
}

問題是您將指針的副本傳遞給read_tree函數。 也就是說,當您在主函數中調用read_tree(r)時,無論read_tree函數內部發生什么, r保持NULL 您可以通過按引用傳遞指針來修復它。 也就是說,將read_tree(Nod* r)更改為read_tree(Nod*& r)應該可以解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM