C语言二叉树的数据结构实现

树是一种重要的非线性数据结构,其中以二叉树最为常用,这遍博文是基于C语言的二叉树实现,包括树的建立,前序遍历,中序遍历和后序遍历,gcc5.2编译通过。


#define OVERFLOW 0
#define NULL 0

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

typedef struct  BitNode //二叉树结构,包含一个数据域,两个指针
{
    char data;
    struct BitNode *lchild, *rchild;
}BitNode, *BitTree;


void CreatBitTree(BitTree *T) //二叉树建立
{
    char ch;
    scanf("%c", &ch);
    if(ch == '#')
        *T = NULL;
    else
    {
        *T = (BitTree)malloc(sizeof(BitNode));
        if(!*T)
            exit(OVERFLOW);
        (*T)->data = ch;
        CreatBitTree(&(*T)->lchild); CreatBitTree(&(*T)->rchild); } } void PreOrderTraverse(BitTree T) //二叉树前序遍历 { if(T == NULL) return; printf("%c", T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } void InOrderTraverse(BitTree T) //中序遍历 { if(T == NULL) return; InOrderTraverse(T->lchild); printf("%c", T->data); InOrderTraverse(T->rchild); } void PostOrderTraverse(BitTree T) //后序遍历 { if(T == NULL) return; PostOrderTraverse(T->lchild); PostOrderTraverse(T->rchild); printf("%c", T->data); } int main() { BitTree T; CreatBitTree(&T); PreOrderTraverse(T); printf("\n"); InOrderTraverse(T); printf("\n"); PostOrderTraverse(T); printf("\n"); } 

生成一个如图所示的二叉树

C语言二叉树的数据结构实现_第1张图片

因为是以前序遍历方式建立的二叉树,所以对应地在键盘上输入
ABDH#K###E##CFI###G#J##
运行结果如下:
C语言二叉树的数据结构实现_第2张图片

你可能感兴趣的:(数据结构,二叉树,遍历,C语言)