二叉树创立及遍历

编写程序实现二叉树的创建,先序、中序、后序的递归遍历算法。在此基础上设计一个主程序完成如下功能:

(1)依次读入字符“ABD∅∅E∅∅C∅FG∅∅H∅∅”,按照先序建立二叉树T(∅表示空格);

2)先序递归遍历二叉树T,输出遍历序列;

3)中序递归遍历二叉树T,输出遍历序列;

(4)后序递归遍历二叉树T,输出遍历序列。

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAXSIZE 70
typedef struct BiTreeNode
{
    char data;
    struct BiTreeNode *left;
    struct BiTreeNode *right;
}BiTreeNode, *BiTree;
void CreateBiTree(BiTree *T)
{
    char val;
    scanf_s("%c", &val);

    if (val == '0')
        *T = NULL;  //null表示为空枝

    else
    {
        *T = (BiTree)malloc(sizeof(BiTreeNode));
        (*T)->data = val;
        CreateBiTree(&(*T)->left);
        CreateBiTree(&(*T)->right);
    }
}
void PreOrderTravel(BiTree T)
{
    if (T == NULL)
        return;
    printf("%c ", T->data);
    PreOrderTravel(T->left);
    PreOrderTravel(T->right);
}
void InOrderTravel(BiTree T)
{
    if (T == NULL)
        return;
    InOrderTravel(T->left);
    printf("%c ", T->data);
    InOrderTravel(T->right);
}
void TailOrderTravel(BiTree T)
{
    if (T == NULL)
        return;
    TailOrderTravel(T->left);
    TailOrderTravel(T->right);
    printf("%c ", T->data);
}
int main()
{
    
    BiTree T;
    T = (BiTree)malloc(sizeof(BiTreeNode));

    printf("输入结点的值:
");
    CreateBiTree(&T);
    printf("先序遍历:
");
    PreOrderTravel(T);
    printf("
");
    printf("中序遍历:
");
    InOrderTravel(T);
    printf("
");
    printf("后序遍历:
");
    TailOrderTravel(T);
    printf("
");
    return 0;
}

运行截图:

原文地址:https://www.cnblogs.com/lumc5/p/11711828.html