二叉树的遍历与创建

来源:互联网 发布:淘宝店团队怎么组建 编辑:程序博客网 时间:2024/05/29 13:00
#include<iostream>#define MAX_TREE_SIZE 100typedef char TElemType;//二叉树的结构链表结点结构的定义typedef struct BiTNode {  //结点结构    TElemType data;    struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;//二叉树的前序遍历递归算法void PreOrderTraverse(BiTree T){    if (T == NULL)        return;    printf("%c", T->data);  //显示结点数据    PreOrderTraverse(T->lchild);   //前序遍历左子树    PreOrderTraverse(T->rchild);   //前序遍历右子树}//二叉树的中序遍历递归算法void InOrderTraverse(BiTree T){    if (T == NULL)        return;    InOrderTraverse(T->lchild);    printf("%c", T->data);    InOrderTraverse(T->rchild);}//二叉树的后序遍历递归算法void PostOrderTraverse(BiTree T){    if (T == NULL)        return;    PostOrderTraverse(T->lchild);    PostOrderTraverse(T->rchild);       printf("%c", T->data);}//按前序输入二叉树中结点的值(一个字符)//#表示空树,构造二叉链表表示二叉树Tvoid CreateBiTree(BiTree *T){    TElemType ch;    scanf_s("%c", &ch);    if (ch == '#')        *T = NULL;    else {        *T = (BiTree)malloc(sizeof(BiTNode));        if (!*T)            exit(OVERFLOW);        (*T)->data = ch;        CreateBiTree(&(*T)->lchild);        CreateBiTree(&(*T)->rchild);    }}int main(){    BiTree tree;    CreateBiTree(&tree);    InOrderTraverse(tree);}
0 0
原创粉丝点击