求助
  • 板块学术版
  • 楼主small_lemon_qwq
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/1/24 12:52
  • 上次更新2024/1/24 13:10:55
查看原帖
求助
715948
small_lemon_qwq楼主2024/1/24 12:52

在写二叉树,咋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;
} 
2024/1/24 12:52
加载中...