数据结构——树的简单操作集合

很多数据结构的书上讲解数据机构时都是采用伪代码实现,其实感觉蛮不直观的,所以对于所有的数据结构操作我都将其用C实现一遍。
树是学习二叉树的基础,也是后面理解B树,B+树的等树的基础,下面就给出树的几个简单操作,方便理解。

数据结构

//-------数据结构----------------------------------------
#define m 3  //定义度为3的树
typedef char datatype;
typedef struct node
{
    datatype data;
    struct node* child[m];
}treenode;
//------------------------------------------------------

基本操作

//--------操作------------------------------------------
void preorder(treenode* t)
{
    int i;
    if (t)
    {
        printf("%c",t->data);
        for(i=0;i<m;i++)
        {
            preorder(t->child[i]);
        }
    }
}

void postorer(treenode* t)
{
    int i;
    if (t)
    {
        for(i =0;i<m;i++)
        {
            postorer(t->child[i]);
        }
        printf("%c",t->data);
    }
}
//必须用指针的指针,如果实参是一个指针,则形参只是一个实参指针的拷贝,所以实参指针的值是不会改变的。
void createtree(treenode** p) 
{
    //输入的时候直接输AB###C###D###回车
    int i;char ch;
    scanf("%c",&ch);
    if (ch =='#')
    {
        *p = NULL;
    }
    else
    {
        *p = (treenode*)malloc(sizeof(node));
        (*p)->data = ch;
        for (i =0;i<m;i++)
        {
            createtree(&((*p)->child[i]));
        }
    }
}
//------------------------------------------------------

对于树的操作不需要做太多,大多数都是针对二叉树的操作,所以就给出了简单的几个操作,足矣。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值