zoukankan      html  css  js  c++  java
  • 二叉树的存储结构

    二叉树的存储结构

    1.   顺序存储
      1. #define MAX_TREE_SIZE 100    //二叉树最大节点数
      2.    typedef ElemType SqBiTree[MAX_TREE_SIZE];     //0号位存储根节点
      3.  SqBiTree t;
    2.        二叉树的顺序存储就是用一组地址连续的存储单元来存放二叉树的数据元素,C语言中常使用数组实现。
    3.        对于完全二叉树来说,采用顺序存储结构十分合适,因为它充分利用存储空间。但对于一般的二叉树,特别是那些单支结点(度为1)比较多的二叉树来说,空间浪费十分巨大。而且插入和删除也很不便,所以对于一般的二叉树,采用链式存储。
    1.    链式存储:
    2.         由定义,二叉树的一个结点包括一个数据元素和左子树、右子树的指针组成,所以二叉链表中结点至少有三个域,左右指针域、数据域。
    3.    typedef struct BiTNode
    4.   { 
    5.              ElemType data;             //数据
    6.              struct BiTNode *lchild,*rchild;
    7.        }BiNode,*BiTree;
    1.   n个结点的二叉链表有2n个指针域,其中非空指针域 n-1个。空指针域n+1个。这些空指针域存储其他信息我们可以得到线索链表。
    2.        因为二叉链表访问孩子结点比较简单而访问父母结点需要遍历树,所以可以再结点中加入指向双亲的指针域,即得到三叉链表。
      1.    typedef struct TriTNode
      2.   { 
      3.              ElemType data;             //数据
      4.              struct TriTNode *lchild,*rchild;
      5.              struct TriTNode *parent;
      6.        }TriNode,*TriTree;
    3.    双亲链表:利用二叉树只有一个前驱的特性,也可以只设计一个指针域,让其指向该结点的前驱,为了区分左右结点,设置一个左右孩子标志域,即每个结点有三个标志域:数据域、、指针域、                                标志域。
  • 相关阅读:
    Linux用户配置文件、口令配置文件、组配置文件
    Linux忘记Root密码怎么找回
    Linux运行级别及解释
    Maven获取resources的文件路径、读取resources的文件
    常见状态码100、200、300、400、500等
    JVM内存模型
    tcl使用小结
    MFQ&&PPDCS
    总结下自己在工作中有关联的TCP/IP协议
    二层交换机和三层交换机
  • 原文地址:https://www.cnblogs.com/ambdyx/p/11632492.html
Copyright © 2011-2022 走看看