二叉树的顺序存储代码

这段代码展示了如何使用C语言实现二叉树的顺序存储结构,并提供了创建、遍历、查找子节点、父节点、深度计算、叶子节点计数等功能。
摘要由CSDN通过智能技术生成

#include<stdio.h>
#include<stdlib.h>

/*二叉树的顺序存储 , 空结点用#代替*/
typedef struct TreeArr{
    char *data;
    int nodes;          //非空结点数量
}TreeArr;


//创建树
TreeArr *createTree(char *datas , int len){
    TreeArr *tree = (TreeArr *)malloc(sizeof(TreeArr));
    tree->data = (char *)malloc(sizeof(char) * len);
    tree->nodes = 0;
    int i;
    for(i = 0 ; i < len ; i++){
        tree->data[i] = datas[i];
        if(tree->data[i] != '#'){
            tree->nodes++;
        }
    }
    return tree;
}

/*查找某个结点的左右孩子结点*/
char findLchild(TreeArr *T , int index){       //查找下标位于index结点的左孩子的值
    return T->data[index] == '#' ? '#' : T->data[(index + 1) * 2 - 1];
    //index一定要先加一,因为你传入如果是下标为0的结点(A),如果不先加1,那它的左孩子下标就是0*2-1即-1了,肯定会出错的
}

char findRchild(TreeArr *T , int index){
    return T->data[index] == '#' ? '#' : T->data[(index + 1) * 2];
    //同理,index要加先加1,若还是不理解,那么就把树的图形画出来,再在结点的旁边标注该节点的下标,你就明白啦

}
/*返回父亲结点值*/
char findParent(TreeArr *T , int index){
    return index == 0 ? '\0&

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值