美文网首页
二叉树_顺序存储

二叉树_顺序存储

作者: Mad_Elliot | 来源:发表于2019-02-17 15:37 被阅读0次

满二叉树 (Full Binary Tree)
所有分支结点都有存在左子树和右子树,并且所有叶子结点都在同一层上。
完全二叉树 (Complete Binary Tree)
如果一棵具有n个结点的二叉树与满二叉树的前n个结点的结构相同,则称这棵二叉树为完全二叉树。

完全二叉树

顺序存储:

重要性质
对于一棵有n个结点的完全二叉树的结点按照从上至下和从左至右的顺序对所有结点从零开始到 n-1 进行顺序编号,则对于序号为i的结点(0≤i≤n),有:
(1)如果 i=0,则结点i是二叉树的根;如果i>0,则其双亲是结点(i-1)/2(整除)。
(2)如果2i+1≥n,则结点i无左孩子;否则,其左孩子是结点 2i+1
(3)如果2i+2≥n,则结点i无右孩子;否则,其右孩子是结点 2i+2

对于非完全二叉树的存储一律转为完全二叉树处理,空缺的地方内容为空。

根据上面两点,得到二叉树顺序存储的实现:

定义:

#define MaxSize 100
typedef char ElemType;
typedef struct SeqBinaryTree
{
    ElemType data[MaxSize];
    int node_num;   //完全二叉树状态下的节点数 
}SeqBTree;

获取双亲节点下标:

int Parent_seq(SeqBTree *t, int p)
{
    if(p < 0||p>=t->node_num) return -1;
    return (p-1)/2;
}

左子节点下标:

int LeftChild_seq(SeqBTree *t, int p)
{
    if(p < 0 || (2*p+1) >= t->node_num) return -1;
    return 2*p + 1;
}

右子节点下标:

int RightChild_seq(SeqBTree *t, int p)
{
    if(p<0 || (2*p+2)>=t->node_num) return -1;
    return 2*p + 2;
}

主函数测试:

#include<stdio.h> 
void main()
{
    SeqBTree t;
    int i,x;
    for(i=0; i<10; i++)
    {
        t.data[i] = 'A' + i;
        t.node_num++;
    }
    x = Parent_seq(&t,5);
    printf("%c\n", t.data[x]);  
}

总结:
1、对于完全二叉树或接近于完全的二叉树,用顺序存储可以省空间简化操作;否则,都不适宜用顺序存储。
2、顺序存储结构通病:必须预先给出数组的存储空间大小MaxSize。

相关文章

  • 四、树与二叉树

    四、树与二叉树 1. 二叉树的顺序存储结构 二叉树的顺序存储就是用数组存储二叉树。二叉树的每个结点在顺序存储中都有...

  • 常用数据结构

    一、序列 数组:顺序存储,随机访问 链表:链表存储,顺序访问 栈 队列 串 二、树 1)二叉树 2)遍历二叉树 前...

  • Java二叉树的遍历思想及核心代码实现

    二叉树在计算机中的存储方式往往线性结构,线性存储分为顺序存储和链式存储,将二叉树按层序编号。 顺序结构:按编号的顺...

  • 二叉树

    定义 斜树 完美二叉树 完全二叉树 存储结构 顺序存储结构 二叉链表 二叉...

  • 数据结构与算法分析四 树(续)

    ** 顺序存储 ** 线索化二叉树 线索化代码实现

  • 三、二叉树的存储结构

    一、顺序存储结构 我们顺序的存储这个二叉树的数据: 我们针对图中的树可以得出这样的关系,但是这仅针对于完全二叉树,...

  • 数据结构重学日记(十七)二叉树的存储结构

    二叉树的存储结构也包括顺序存储和链式存储 顺序存储 就是用一组地址连续的存储单元依次自上而下,自左至右存储完全二叉...

  • 二叉树的存储及遍历

    一、二叉树顺序存储实现: 1.存储结构:(数组)···/* 0号单元存储根结点 */typedef CElemT...

  • 二叉树操作

    树节点 逐行顺序解析二叉树 前序遍历二叉树 中序遍历二叉树 后序遍历二叉树 删除指定数值的节点 前序遍历顺序存储的...

  • 数据结构课程 第七周 树和二叉树

    定义 基本术语 与线性结构比较 二叉树 二叉树抽象数据类型定义 二叉树性质和存储结构 特殊形式二叉树(顺序存储时可...

网友评论

      本文标题:二叉树_顺序存储

      本文链接:https://www.haomeiwen.com/subject/gfjudqtx.html