1. 程式人生 > >C語言資料結構的簡單實驗——二叉樹的遍歷

C語言資料結構的簡單實驗——二叉樹的遍歷

實驗題目:

建立一株用二叉連結串列儲存的二叉樹,並對其進行遍歷。

實驗思路:

解題關鍵是要建立二叉樹,因此對語二叉樹的每一個節點,我以連結串列為儲存方式並用遞迴的思想對其進行定義。

**

程式碼實現:

**

#include<stdio.h>
#include<stdlib.h>

typedef struct  node
{ 
	char data;
	struct node* Lchild;
	struct node* Rchild;
}bitnode;


bitnode* CreatBiNode();			//建立一顆二叉樹 
void PreOrder(bitnode* node);	//先序遍歷 
void InOrder(bitnode* node);	//中序遍歷 
void PostOrder(bitnode* node);	//後序遍歷

 
int main()
{
	printf("----------------------二叉樹的遍歷--------------------------:\n");
	bitnode* root = CreatBiNode();
	
	printf("先序遍歷:\n");
	PreOrder(root); 
 	printf("\n中序遍歷:\n");
 	InOrder(root);
	printf("\n後序遍歷:\n");
	PostOrder(root);
return 0;
}

bitnode *CreatBiNode()
{
		bitnode* p;
		char ch;
		scanf("%c",&ch);
		if(ch == ' ')
		{
			p = NULL;
		 } 
		else
		{
			p = (bitnode*)malloc(sizeof(bitnode));
			p->data = ch;
			p->Lchild = CreatBiNode();
			p->Rchild = CreatBiNode();
		}
	
		return p;
	}
	



void PreOrder(bitnode *node)
{	
	if( node )
	{
		printf("%c",node->data );
		PreOrder(node->Lchild);
		PreOrder(node->Rchild);
	} 
}

void InOrder(bitnode *node)
{
	
	if(node)
	{
		
		InOrder(node->Lchild);
		printf("%c",node->data);
		InOrder(node->Rchild);
	} 

}

void PostOrder(bitnode *node)
{
	if(node)
	{
	PostOrder(node->Lchild);
	PostOrder(node->Rchild);	
	printf("%c",node->data);
	}
}

**

實驗結果:

** 在這裡插入圖片描述