在写二叉树,咋RE了,有没有大佬帮我看看
#include<bits/stdc++.h>
using namespace std;
int n;
template<class T>
class binary_tree{
public:
struct tree_node{
operator int(){
return num;
}
friend std::ostream&operator<<(std::ostream&out,const tree_node&x){
out<<x.num;
return out;
}
tree_node*father=NULL;
tree_node*left_child=NULL;
tree_node*right_child=NULL;
T num=0;
};
tree_node Trunk;
void init(T num) {
Trunk.num=num;
}
void add(tree_node&f,T n,tree_node*l=NULL,tree_node*r=NULL) {
tree_node x={&f,l,r,n};
if (f.left_child==NULL){
f.left_child=&x;
}else if (f.left_child != NULL&&f.right_child==NULL) {
f.right_child = &x;
}else{
_exit(1);
}
}
vector<T>fun(){
vector<T>ans;
queue<tree_node>q;
q.push(Trunk);
while(q.size()>0){
tree_node t=q.front();
ans.push_back(t);
q.pop();
if(t.left_child!=NULL){
q.push(*(t.left_child));//好似是这里的问题
}
if(t.right_child!=NULL){
q.push(*(t.right_child));
}
}
return ans;
}
private:
};
int main() {
binary_tree<int>a;
a.init(0);
a.add(a.Trunk, 0);
a.add(a.Trunk, 0);
auto b=a.Trunk.left_child;
a.add(*b,1);
vector<int>x=a.fun();
for(int i=0;(unsigned int)i<=x.size()-1;i++){
cout<<x[i]<<" ";
}
return 0;
}