树基本概念

使用递归法创建一棵树,并在该树上实现前、中、后序遍历。

#结构体的定义

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
/*创建一颗二叉树用递归方法实现对其进行先、中、后序遍历的操作*/
//创建二叉树结构体
typedef struct Node
{
    char data;
    struct Node *LChild;
    struct Node *RChild;
}BiTNode,*BiTree;

//结构体初始化
void init(BiTree *b)
{
    *b=(BiTree)malloc(sizeof(BiTNode));
    (*b)->LChild=NULL;
    (*b)->RChild=NULL;
}

#主函数

int main()
{
    BiTree b;
    init(&b);
    int i;
     while(1)
    {
        printf("输入1:创建二叉树\n");
        printf("输入2:先序遍历二叉树\n");
        printf("输入3:中序遍历二叉树\n");
        printf("输入4:后序遍历二叉树\n");
        printf("输入0:退出\n");
        printf("请输入要执行的操作:\n");
        scanf("%d",&i);
        switch(i)
        {
            case 1:
              CreateBiTree(&b);
              break;
            case 2:
              PreOrder(b);
              printf("\n");
               break;
            case 3:
                inOrder(b);
                printf("\n");
               break;
            case 4:
                PostOrder(b);
                printf("\n");
               break;
            case 0:
                break;
        }
        if(i==0)
            break;
    }
}

#1.递归法创建二叉树

//建立二叉树
void CreateBiTree(BiTree *b)
{
    char ch;
    printf("请输入数据:\n");
    getchar();
    ch=getchar();
    if(ch=='#') *b=NULL;
    else
    {
        *b=(BiTree)malloc(sizeof(BiTNode));
        (*b)->data=ch;
        CreateBiTree(&((*b)->LChild));
        CreateBiTree(&((*b)->RChild));
    }
}

#2.遍历二叉树

##2.1先序遍历二叉树

//先序遍历二叉树
void PreOrder(BiTree b)
{
    if(b!=NULL)
    {
        printf("%c",b->data);
        PreOrder(b->LChild);
        PreOrder(b->RChild);
    }
}

##2.2中序遍历二叉树

//中序遍历二叉树
void inOrder(BiTree b)
{
    if(b!=NULL)
    {
        inOrder(b->LChild);
        printf("%c",b->data);
        inOrder(b->RChild);
    }
}

##2.3后序遍历二叉树

//后序遍历二叉树
void PostOrder(BiTree b)
{
     if(b!=NULL)
    {
        PostOrder(b->LChild);
        PostOrder(b->RChild);
        printf("%c",b->data);

    }
}

#3.运行结果截图

         先序遍历

         中序遍历

         后序遍历

猜你喜欢

转载自www.cnblogs.com/jinyu-/p/10781208.html
今日推荐