双赢彩票(中国)-官方网站

二叉树的链式存储结构(C语言详解)-双赢彩票平台

您当前位置: 首页 > 新闻动态 > 公司新闻

新闻动态
二叉树的链式存储结构(C语言详解)

类别:公司新闻   发布时间:2025-07-06 22:11:04   浏览:

  上一节讲了二叉树的顺序存储,通过学习你会发现,其实二叉树并不适合用数组存储,因为并不是每个二叉树都是完全二叉树,普通二叉树使用顺序表存储或多或多会存在空间浪费的现象。

  如图 1 所示,此为一棵普通的二叉树,若将其采用链式存储,则只需从树的根节点开始,将各个节点及其左右孩子使用链表存储即可。因此,图 1 对应的链式存储结构如图 2 所示:

  由图 2 可知,采用链式存储二叉树时,其节点结构由 3 部分构成(如图 3 所示):

  双赢平台

  双赢平台

二叉树的链式存储结构(C语言详解)(图1)

  #include stdio.h #include stdlib.h #define TElemType int typedef struct BiTNode{ TElemType data;//数据域 struct BiTNode *lchild,*rchild;//左右孩子指针 }BiTNode,*BiTree; void CreateBiTree(BiTree *T){ *T=(BiTNode*)malloc(sizeof(BiTNode)); (*T)-data=1; (*T)-lchild=(BiTNode*)malloc(sizeof(BiTNode)); (*T)-lchild-data=2; (*T)-rchild=(BiTNode*)malloc(sizeof(BiTNode)); (*T)-rchild-data=3; (*T)-rchild-lchild=NULL; (*T)-rchild-rchild=NULL; (*T)-lchild-lchild=(BiTNode*)malloc(sizeof(BiTNode)); (*T)-lchild-lchild-data=4; (*T)-lchild-rchild=NULL; (*T)-lchild-lchild-lchild=NULL; (*T)-lchild-lchild-rchild=NULL; } int main() { BiTree Tree; CreateBiTree(printf(%d,Tree-lchild-lchild-data); return 0; }

  其实,二叉树的链式存储结构远不止图 2 所示的这一种。例如,在某些实际场景中,可能会做 查找某节点的父节点 的操作,这时可以在节点结构中再添加一个指针域,用于各个节点指向其父亲节点,如图 4 所示:

二叉树的链式存储结构(C语言详解)(图2)

  二叉树的前序遍历详解(图文并茂,C语言实现)二叉树的层次遍历(图文并茂,C语言实现)

  Java遍历二叉树的3种方法(先序、中序和后序遍历)Java实现二叉树的线索化(非常详细)

搜索