知识大全 树 - 二叉树 - 二叉树的存储结构(二)

Posted 结点

篇首语:一年好景君须记,最是橙黄橘绿时。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 树 - 二叉树 - 二叉树的存储结构(二)相关的知识,希望对你有一定的参考价值。

  链式存储结构

   结点的结构

  二叉树的每个结点最多有两个孩子 用链接方式存储二叉树时 每个结点除了存储结点本身的数据外 还应设置两个指针域

  lchild和rchild 分别指向该结点的左孩子和右孩子 结点的结构为

  

>

   结点的类型说明

  typedef char DataType; //用户可根据具体应用定义DataType的实际类型

  typedef struct node

  DataType data;

  Struct node *lchild *rchild; //左右孩子指针

  BinTNode; //结点类型

  typedef BinTNode *BinTree;//BinTree为指向BinTNode类型结点的指针类型

   二叉链表(二叉树的常用链式存储结构)

  在一棵二叉树中 所有类型为BinTNode的结点 再加上一个指向开始结点(即根结点)的BinTree型头指针(即根指针)root 就构

  成了二叉树的链式存储结构 并将其称为二叉链表

  【例】下面左图所示二叉树的二叉链表如下面中图所示

  

>

  注意

  ① 一个二叉链表由根指针root惟一确定 若二叉树为空 则root=NULL;若结点的某个孩子不存在 则相应的指针为空

  ② 具有n个结点的二叉链表中 共有 n个指针域 其中只有n 个用来指示结点的左 右孩子 其余的n+ 个指针域为空

   带双亲指针的二叉链表

  经常要在二叉树中寻找某结点的双亲时 可在每个结点上再加一个指向其双亲的指针parent 形成一个带双亲指针的二叉链表

  【例】上面右图是上面左图所示的二叉树的带双亲指针的二叉链表

  注意

  二叉树存储方法的选择 主要依赖于所要实施的各种运算的频度

cha138/Article/program/sjjg/201311/23885

相关参考