肥哥们,小肥想请教为什么我的先序遍历出不来结果,逻辑自认为没错,但是在调试页面发现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;
}