Chinaunix首页 | 论坛 | 博客
  • 博客访问: 243150
  • 博文数量: 52
  • 博客积分: 285
  • 博客等级: 二等列兵
  • 技术积分: 585
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-25 23:38
文章分类

全部博文(52)

文章存档

2013年(43)

2012年(9)

我的朋友

分类: C/C++

2013-05-24 11:01:06

 第一次亲自写博文,也好久没有着手写些程序了。以此,一来激励自己,二者与大家共勉。                                                                                                                                                  
#include
#include

typedef struct BiNode
{
    int data;
    struct BiNode *left;
    struct BiNode *right;
}BiNode;

typedef BiNode *BiTree;

void initBiTree(BiTree *T);
void createBiTree(BiTree *T);
void preOrderTraverseBiTree(BiTree T);
void inOrderTraverseBiTree(BiTree T);
void destroyBiTree(BiTree *T);

int main()
{
    BiTree T;
    printf("init your Binary Tree...\n");
    initBiTree(&T);
    printf("Preorder Create your Binary Tree...\n");
    createBiTree(&T);
    printf("preOrderTraverseBiTree...\n");
    preOrderTraverseBiTree(T);
    printf("inOrderTraverseBiTree...\n");
    inOrderTraverseBiTree(T);
    printf("destroyBiTree...\n");
    destroyBiTree(&T);
    return 0;
}

void initBiTree(BiTree *T)
{
    BiNode *Root;
    Root =(BiNode *)malloc(sizeof(BiNode));
    if(!Root)
    {
        printf("init Root error!\n");
        return;
    }
    *T = Root;
}

void createBiTree(BiTree *T)
{
    int data;  
    BiNode *Root;
    printf("input your number and -1 for NULL:");
    scanf("%d",&data);
    if(data == -1)
    {
        return;
    }
    else
    {
        Root =(BiNode *)malloc(sizeof(BiNode));
        if(!Root)
        {
            printf("malloc BiNode error!\n");
            return;
        }

        Root->data = data;
        *T = Root;
        printf("%d\n",Root->data);
        createBiTree(&(Root->left));
        createBiTree(&(Root->right));
    }
}

void preOrderTraverseBiTree(BiTree T)
{
    if(T)
    {
        printf("%d\n",T->data);
        preOrderTraverseBiTree(T->left);
        preOrderTraverseBiTree(T->right);
    }
}
void inOrderTraverseBiTree(BiTree T)
{
    if(T)
    {
        inOrderTraverseBiTree(T->left);
        printf("%d\n",T->data);
        inOrderTraverseBiTree(T->right);
    }
}
void destroyBiTree(BiTree *T)
{
    if(*T)  
    {
        destroyBiTree(&((*T)->left));
        destroyBiTree(&((*T)->right));
        free(*T);
    }
}

                                                                  

                                               


阅读(1419) | 评论(0) | 转发(0) |
0

上一篇:vi命令

下一篇:Linux内核学习笔记 -01计划

给主人留下些什么吧!~~