001-二叉树初探(顺序存储)

202 阅读1分钟

什么是二叉树

  1. 在数据结构中二叉树是一种特殊的树形结构. 二叉树的特点是每个节点有且最多有两个节点

二叉树 中的各种概念

image.png

  • 我们称A为B C结点的双亲
  • B为A的左子树 C为A的右子树
  • BC称为兄弟结点

几种不同的二叉树

image.png

二叉树存储

顺序存储(顺序存储)


#define OK 1

#define FALSE 0

typedef int sqBiTree[MAXSIZE];
//定义一个结构体 显示层 内容

typedef struct {

    int level;//层

    int order;//内容

} Position;
//初始化空的二叉树
void InitBiTree(sqBiTree T){
    for (int i = 0; i < MAXSIZE; i++) {
        T[i] = 0;
    }
};
//构建一个二叉树 1 2 3 4 5 6 7 8 9 10 (满二叉树)

/*

            1          -->1

      2           3   -->2

   4      5     6   7 -->3

 8   9 10             -->4

 

 1 2 3 4 5 6 7 8 9 10 Nil Nil Nil

 */
int CreactBiTree(sqBiTree T){
    int i = 0;
    for (i = 0 ; i < 10; i++) {
        T[i] = i+1;
    }
    return OK;
}
//判断二叉树是否为空

int BiTreeEmpty(sqBiTree T){
    if (T[0] == 0) {
        return OK;
    }
    return  FALSE;
}
//获取二叉树的深度

int BiTreeDepth(sqBiTree T){
    //找到最后一个不为空的结点
    int i;
    for (i = MAXSIZE -1 ; i>0; i--) {

        if (T[i] != 0) {
           break;
        }
    }
    int j = -1;
    do{
        j++;
    }while (pow(2, j) <= i);
    printf("树的深度是%d",j);
    return  j;

}