数据结构271-中序遍历二叉排序树

中序遍历二叉排序树
输入一整数序列,建立二叉排序树,然后中序遍历。
输入第一行为整数的个数n,第二行是具体的n个整数。
建立二叉排序树,然后输出中序遍历的结果。
输入示例:
5
1 6 5 9 8
输出:
1 5 6 8 9

#include<stdio.h>
#include<stdlib.h>
typedef	struct	node
{
	int	data;
	struct	node	*left;
	struct	node	*right;
}BTnode;

//二叉树的创建
BTnode	*CreateBTree(int	a[],int	n)
{
	BTnode	*root,*p,*c,*pa;						//root为根结点	p为开辟新结点	c寻找结点位置	pa为c的前驱
	root=(BTnode	*)malloc(sizeof(BTnode));
	root->data=a[0];
	root->left=root->right=NULL;
	int i;
	for(i=1;i<n;i++)
	{
		p=(BTnode	*)malloc(sizeof(BTnode));
		p->data=a[i];
		p->left=p->right=NULL;
		c=root;
		while(c!=NULL)
		{
			pa=c;
			if(c->data>p->data)
				c=c->left;
			else
				c=c->right;
		}
		if(pa->data>p->data)
			pa->left=p;
		else
			pa->right=p;
	}
	return	root;
}

//遍历二叉树	中序遍历

void	Inorder(BTnode	*root)
{
	if(root)
	{
		Inorder(root->left);
		printf("%d ",root->data);
		Inorder(root->right);
	}
}
int	main(void)
{
	
	BTnode	*root;
	int n,i;
	int array[1000];
	scanf("%d",&n);
	for(i=0;i<n;i++){
		scanf("%d",&array[i]);
	}
	root=CreateBTree(array,n);
	Inorder(root);
	return	0;
}
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页