数据结构中二叉树的相关操作

#include

#include

#define DataType char



typedef struct BiTNode{    //二叉链表的结构类型

DataType data;         //数据域

struct BiTNode *lchild,*rchild;    //二叉链表的指针域

}BiTNode,*BiTree;



BiTree CreateBiTree(){         //先序建立二叉树

char ch;             //声明二叉树里面的数据类型

BiTree T;            //定义一个二叉树

scanf("%c",&ch);         //输入数据

if(ch==' ')T=NULL;

else{

T=(BiTree)malloc(sizeof(BiTNode));    //开辟存储空间

T->data = ch;            //输入数据

T->lchild = CreateBiTree();         //左指针指向左边分叉子树

T->rchild = CreateBiTree();         //右指针指向右边分叉子树

}

return T;            //创建成功  返回根节点存储位置

}



void PreOrderTraverse(BiTree T){        //先序遍历二叉树,递归函数

if(T){

printf("%c",T->data);

PreOrderTraverse(T->lchild);

PreOrderTraverse(T->rchild);

}

}



void InOrderTraverse(BiTree T){          //中序遍历二叉树,递归函数

if(T){

InOrderTraverse(T->lchild);

printf("%c",T->data);

InOrderTraverse(T->rchild);

}

}



void PostOrderTraverse(BiTree T){        //后序遍历二叉树,递归函数

if(T){

PostOrderTraverse(T->lchild);

PostOrderTraverse(T->rchild);

printf("%c",T->data);

}

}

int main(){

BiTree T;

printf("先序输入二叉树:\n");

T = CreateBiTree();          //先序创建二叉树

printf("先序遍历输出二叉树:\n");

PreOrderTraverse(T);         //先序遍历输出二叉树

printf("\n");

printf("中序遍历输出二叉树:\n");

InOrderTraverse(T);        //中序遍历输出二叉树

printf("\n");

printf("后序遍历输出二叉树:\n");

PostOrderTraverse(T);        //后序遍历输出二叉树

printf("\n");

system("pause");            //防止运行后闪退,相当于按住暂停键

}

 

你可能感兴趣的:(数据结构,二叉树,二叉树创建,二叉树先序遍历输出,二叉树中序遍历输出,二叉树后序遍历输出)