データ構造の出力:1次トラバーサル、中次トラバーサル、およびポスト次トラバーサル

トラバーサルを理解する

トラバーサルを理解する

トピック:

既知の二分木の事前注文トラバーサルは次のとおりです。ABDEGCF

                     ミドルオーダートラバーサルは次のとおりです。DBGEACF

                  次に、注文後のトラバーサルは次のとおりです。

図面分析

 

二分木探索コード(再帰的アルゴリズム)

typedef:ユーザー定義のデータ型に新しい名前を付けるため

#include <stdio.h>
#include <stdlib.h>
typedef char DataType;

typedef struct Node
{
	DataType data;
	struct Node * LChild;
	struct Node * RChild;
}BiTNode,* BiTree;

//创建
void CreateNode (BiTree *T)
{
	DataType ch;
	scanf("%c",&ch);
	if(ch=='#')
        *T=NULL;
	else{
		*T=(BiTree) malloc (sizeof(Node ));
		 
		(*T)->data=ch;
		CreateNode(&(*T)->LChild);
		CreateNode(&(*T)->RChild);
		
	}
}

//输出
void Ch(DataType ch)
{
	printf(" %c ",ch);
}
//先序遍历二叉树
void PreOrder(BiTree T)
{
	if(T!=NULL)
	{
		Ch(T->data);
		PreOrder(T->LChild);
		PreOrder(T->RChild);
	}
}

//中序遍历
void InOrder(BiTree T)
{
	if(T!=NULL)
	{
		InOrder(T->LChild);
		Ch(T->data);
		InOrder(T->RChild);
	}
}

//后序遍历
void PostOrder(BiTree T)
{
	if(T!=NULL)
	{
		PostOrder(T->LChild);
		PostOrder(T->RChild);
		Ch(T->data);
	}
}


int main()
{
	BiTree T;
	printf("按先序遍历输入(没有孩子的输入#): \n");
	CreateNode(&T);
	printf("先序遍历: \n");
	PreOrder(T);
	printf("\n");
	printf("中序遍历: \n");
	InOrder(T);
	printf("\n");
	printf("后序遍历: \n");
	PostOrder(T);
	printf("\n");
	return 0;
}

など

次に、注文後のトラバーサルは次のとおりです。DGEBFCA

おすすめ

転載: blog.csdn.net/weixin_44068262/article/details/106290250