实验五1.1

实验五第一题的代码估计其实只需要将课本的改动一下,比如设置一个计数器count就可以使用了。但是非常奇怪的是,在调试的过程中总是出现莫名其妙的错误,根本看不出是什么玩意,代码及报错如下:
<pre name="code" class="cpp">#include<iostream>
using namespace std;
const int k=5;
struct BiNode
{
	char data;
	BiNode * lchild, * rchild;
};

class BiTree
{
public:
	BiTree(){root=creat(root);}
	~BiTree(){release(root);}
	void preorder(){preorder(root);}
	void inorder(){inorder(root);}
	void postorder(){postorder(root);}
private:
	BiNode * root;
	BiNode * creat(BiNode * bt);
	void release(BiNode * bt);
	void preorder(BiNode * bt);
	void inorder(BiNode * bt);
	void postorder(BiNode * bt);
};

BiNode * BiTree::creat(BiNode * bt)
{
	char ch;int count=0;
	cout<<"请输入创建一棵二叉树的结点数据"<<endl;
	cin>>ch;
	count++;
	while(count<k)
	{
	if(ch=='#') return NULL;
	else{
		bt=new BiNode;
		bt->data=ch;
		bt->lchild=creat(bt->lchild);
		bt->rchild=creat(bt->rchild);
	}
		return bt;
	}
}

void BiTree::release(BiNode * bt)
{
	if(bt!=NULL){
		release(bt->lchild);
		release(bt->rchild);
		delete bt;
	}
}

void BiTree::preorder(BiNode * bt)
{
	if(bt!=NULL) return;
	else{
		cout<<bt->data<<" ";
		preorder(bt->lchild);
		preorder(bt->rchild);
	}
}

void BiTree::inorder(BiNode * bt)
{
	if(bt!=NULL) return;
	else{
		inorder(bt->lchild);
		cout<<bt->data<<" ";
		inorder(bt->rchild);
}

void BiTree::postorder(BiNode * bt)
{
	if(bt!=NULL) return;
	else{
		postorder(bt->lchild);
	
		postorder(bt->rchild);
		cout<<bt->data<<" ";
	}
}

int main()
{
	BiTree T;
	cout<<"---------------前序遍历--------------"<<endl;
	T.preorder();
	cout<<"---------------中序遍历--------------"<<endl;
	T.inorder();
	cout<<"---------------后序遍历--------------"<<endl;
	T.postorder();
	cout<<endl;
	return 0;
}


 
 
报错:

<strong><span style="color:#cc0000;">
F:\c++文件\新建文件夹 (3)\实验五1.1.cpp(75) : error C2601: 'postorder' : local function definitions are illegal
F:\c++文件\新建文件夹 (3)\实验五1.1.cpp(86) : error C2601: 'main' : local function definitions are illegal
F:\c++文件\新建文件夹 (3)\实验五1.1.cpp(97) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.</span></strong>
<strong>在多次查找解决方案无果之后决定先贴出来再说,之前的几次实验也是因为调试不过去而被删除了,现在想想多少有些鲁莽。总之先看看再说。至于后面的一个实验,将在之后贴出。嗯,之前的几次实验也会在之后补回。</strong>

猜你喜欢

转载自blog.csdn.net/z1094219402/article/details/41731961
今日推荐