数据结构实验3《二叉树的基本操作》

根据输入的数据建立一个二叉树;
分别采用前序、中序、后序的遍历方式显示输出二叉树的遍历结果

代码:

#include
using namespace std;

struct node			//定义结点
{
	char ch;
	struct node *lchild;
	struct node *rchild;
};

node * create(struct node *p)				//利用递归函数,按照先序创建二叉树,以0代表空
{
	char c;
	cin >> c;
	if (c == '0')p = NULL;
	else
	{
		p = new  node;
		p->ch = c;
		p->lchild = create(p->lchild);
		p->rchild = create(p->rchild);
	}
	return p;
}

void preOrder(node *p)			//利用递归函数,先序遍历
{
	if (p)
	{
		cout << p->ch << " ";
		preOrder(p->lchild);
		preOrder(p->rchild);
	}
}

void inOrder(node *p)			//利用递归函数,中序遍历
{
	if (p)
	{
		inOrder(p->lchild);
		cout << p->ch << " ";
		inOrder(p->rchild);
	}
}

void postOrder(node *p)			//利用递归函数,后序遍历
{
	if (p)
	{
		postOrder(p->lchild);
		postOrder(p->rchild);
		cout << p->ch << " ";
	}
}

int main()
{
	node *root = new  node;
	cout << "输入二叉树存储的字符,以0表示不存在" << endl;
	root = create(root);			//易错点1
	cout << "先序遍历是    ";
	preOrder(root);
	cout << endl << "中序遍历是    ";
	inOrder(root);
	cout << endl << "后序遍历是    ";
	postOrder(root);
	system("pause>nul");
	return 0;
}

用来测试的二叉树:

数据结构实验3《二叉树的基本操作》_第1张图片

运行结果:

数据结构实验3《二叉树的基本操作》_第2张图片

你可能感兴趣的:(数据结构实验3《二叉树的基本操作》)