写作绅士,读作丧尸 X岛揭示板
顺猴者昌 逆猴者亡 首页版规 |用户系统 |移动客户端下载 | 丧尸路标 | | 常用图串及路标 | 请关注 官方公众号:【X岛揭示板】 官方微博: 【@X岛极速版】| 人,是会思考的芦苇
常用串:·豆知识·跑团板聊天室·公告汇总串·X岛路标

No.52865090 - 无标题 - 技术宅


回应模式
No.52865090
名 称
E-mail
标题
颜文字
正文
附加图片
•程序语言、压制投稿、视频制作以及各计算机领域的技术问题
•我觉得还是CSDN靠谱一点
•本版发文间隔为15秒。

收起 查看大图 向左旋转 向右旋转
无标题 无名氏 2022-10-21(五)22:36:22 ID:MhfWtT2 [举报] [订阅] [只看PO] No.52865090 [回应] 管理
肥哥们,小肥想请教为什么我的先序遍历出不来结果,逻辑自认为没错,但是在调试页面发现t.root结果为null,可应该分配空间了,这就产生矛盾了,小肥百思不得其解,求助肥哥们,语言是c++
jp




#include<iostream>
using namespace std;
class mytreenode {
public:
mytreenode(){}
int data ;
mytreenode* left = NULL;
mytreenode* right = NULL;
void setdata(int v) {
data = v;
cout << v << "已设置 ";
}
friend class bintree;
};
class mybintree {

public:
mybintree(){}
~mybintree() { delete root; }
mytreenode* root;
void createtree(mytreenode* T) {
int x;
cin >> x;
if (x == -1)
T = NULL;
else
{
T = new mytreenode;
T->setdata(x);
createtree(T->left);
createtree(T->right);

}
}
//先序遍历
void preorder(mytreenode* T) {
if (T!=NULL) {
cout << T->data<<" ";
preorder(T->left);
preorder(T->right);
}
}
mytreenode* getroot() {
return root;
}
};
int main() {
mybintree t;
t.createtree(t.root);
t.preorder(t.getroot());
return 0;
}
无标题 无名氏 2022-10-22(六)09:23:41 ID:q8eRB7R [举报] No.52870620 管理
肉眼可见的第一个bug?好久没写c++了
友元

在using namespace std;后加一行声明
class mybintree;

mytreenode中的friend声明改成:
friend class mybintree;
无标题 无名氏 2022-10-23(日)08:45:42 ID:MhfWtT2 (PO主) [举报] No.52894662 管理
>>No.52870620
谢谢肥哥,经csdn后发现还得传引用( ゚∀。)
无标题 无名氏 2022-10-23(日)08:59:09 ID:yKhgUn2 [举报] No.52894862 管理
好诡异的jp(´゚Д゚`)

UP主: