这篇文章主要介绍了二叉树先根(先序)遍历的改进,有需要的朋友可以参考一下
二叉树的特点:每个结点的度最大不能超过2,并且左右子树不能颠倒
二叉树的存储结构:下面采用链式存储进行阐述,堆排序算法(快速排序改进)采用的顺序存储结构的二叉树,先看如下结构体的存储方式
顺序存储:
代码如下:
/*二叉树的顺序存储*/
#define MAX_TREE_SIZE 100
typedef TElemType SqBiTree[MAX_TREE_SIZE];
#define MAX_TREE_SIZE 100
typedef TElemType SqBiTree[MAX_TREE_SIZE];
链式存储:
代码如下:
/*二叉树的链式存储*/
typedef struct BiTNode
{
TElemType data;
BiTNode *lchild,*rchild;
}
BiTNode, *BiTree;
typedef struct BiTNode
{
TElemType data;
BiTNode *lchild,*rchild;
}
BiTNode, *BiTree;
这里的TElemType的类型如下,这里我使用了int型的定义:
代码如下:
#define INT_TYPE
#ifdef INT_TYPE
typedef int TElemType;
#elif defined FLOAT_TYPE
typedef float TElemType
#elif defined STRING_TYPE
typedef char *TElemType
#endif
#ifdef INT_TYPE
typedef int TElemType;
#elif defined FLOAT_TYPE
typedef float TElemType
#elif defined STRING_TYPE
typedef char *TElemType
#endif
二叉树的创建:这里需要进行递归创建,如下
代码如下:
int CreateBiTree(BiTree &T)
{
int nData;
{
int nData;
printf(“Please Enter BiTree Node data:\n”);
scanf_s(“%d来源gaodai#ma#com搞*!代#%^码网“, &nData);
if (nData == 0)
{
T = NULL;
return OK;
}
else if (nData > 0 && nData <100)
{
T = (BiTNode*)malloc(sizeof(BiTNode));
if (!T)
{
return BTOVERFLOW;
}
T->data = nData;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
return OK;
}
#ifdef _DEBUG
printf(“Enter data Error!\n”);
#endif // _DEBUG
return ERROR;
}
以上就是二叉树先根(先序)遍历的改进的详细内容,更多请关注gaodaima搞代码网其它相关文章!