二叉树建立和遍历

这里写图片描述
这里写图片描述
这里写图片描述

二叉树的建立— 前中后遍历

//
//  main.c
//  aa
//
//  Created by yyb on 16/8/4.
//  Copyright © 2016年 yyb. All rights reserved.
//

#include <stdio.h>
typedef struct BiTNode //结点结构
{
    char 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 == 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);//显示结点数据,
}

int main(int argc, const char * argv[]) {

    BiTree T;
    T = CreateBiTree();//建立

    PreOrderTraverse(T);//输出

    getchar();
    printf("\n");


    InOrderTraverse(T);
    getchar();
    printf("\n");

#pragma mark ----前序和中序用了就会不执行后序列,T=NUll了,用的话注释掉前两个
    PostOrderTraverse(T);
    getchar();
    printf("\n");


    //TEST
    //1. ABC##DE#G##F###
    //2. ABDG##H###CE#I##F##
    return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值