[英]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.