数据结构之二叉树先序创建和先序遍历

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xnh_565175944/article/details/79959112

先序遍历顺序: 先访问根结点,再访问左子树,最后访问右子树

先序序列的排序也是如此,根结点   左子树   右子树

 

1.结构体

 

struct BitNode
{
	char data;
	struct BitNode *lchild;    //左子树 
	struct BitNode *rchild;	   //右子树 
};


2.二叉树先序方式创造

 

 

BitNode* CreateBitNode(BitNode * bt) //按照先序的方式进行创建 输入方式为AB**C** 遍历结果为ABC 
{
	char c;
	scanf("%c",&c);
	if( c == '*'){
		bt=NULL;      //若是输入为*,则表示该树为NULL
	}
	else{ 
		bt = (BitNode *)malloc(sizeof(BitNode));    //申请内存空间
		bt->data = c;
		bt->lchild =  CreateBitNode(bt->lchild);    //创建左子树
		bt->rchild =  CreateBitNode(bt->rchild);    //创建右子树
	}
	return bt;
} 

3.先序遍历

 

 

void Bit_PreOrder(BitNode * bt)     //先序遍历 
{
	if(bt!=NULL){
		printf("%c",bt->data);   	//打印根结点
		Bit_PreOrder(bt->lchild);   	//遍历左子树
		Bit_PreOrder(bt->rchild);	//遍历右子树
	}
}	//打印根结点
		Bit_PreOrder(bt->lchild);   	//遍历左子树
		Bit_PreOrder(bt->rchild);	//遍历右子树
	}
}


4.结果测试

 

 

int main()
{
	char a[10],c;
	BitNode * bt = NULL;
	bt = CreateBitNode(bt);
	Bit_PreOrder(bt);
	return 0;
 } 

 

 

 

 

 


 

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页