二叉树的二叉链表表示
2017-12-30 16:28
2356 查看
链式存储结构
二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。
通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址。其结点结构为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/05/eaced9ea60a1cda8682f39816d70f9ea.png)
其中,data域存放某结点的数据信息;lchild与rchild分别存放指向左孩子和右孩子的指针,当左孩子或右孩子不存在时,相应指针域值为空(用符号∧或NULL表示)。利用这样的结点结构表示的二叉树的链式存储结构被称为二叉链表,如图5-8所示。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/05/b2a3ef9163e454e9f9885750c7500039.png)
(a) 一棵二叉树 (b) 二叉链表存储结构
图5-8 二叉树的二叉链表表示示意图
为了方便访问某结点的双亲,还可以给链表结点增加一个双亲字段parent,用来指向其双亲结点。每个结点由四个域组成,其结点结构为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/05/a1f721046cfb8e8cd139cc6a70a970da.png)
这种存储结构既便于查找孩子结点,又便于查找双亲结点;但是,相对于二叉链表存储结构而言,它增加了空间开销。利用这样的结点结构表示的二叉树的链式存储结构被称为三叉链表。
图5-9给出了图5-8 (a)所示的一棵二叉树的三叉链表表示。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/05/506817dd6bc931adadbb0cfa1ffda623.png)
图5-9二叉树的三叉链表表示示意图
尽管在二叉链表中无法由结点直接找到其双亲,但由于二叉链表结构灵活,操作方便,对于一般情况的二叉树,甚至比顺序存储结构还节省空间。因此,二叉链表是最常用的二叉树存储方式。
结构5-2二叉树的链式存储
二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。
通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址。其结点结构为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/05/eaced9ea60a1cda8682f39816d70f9ea.png)
其中,data域存放某结点的数据信息;lchild与rchild分别存放指向左孩子和右孩子的指针,当左孩子或右孩子不存在时,相应指针域值为空(用符号∧或NULL表示)。利用这样的结点结构表示的二叉树的链式存储结构被称为二叉链表,如图5-8所示。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/05/b2a3ef9163e454e9f9885750c7500039.png)
(a) 一棵二叉树 (b) 二叉链表存储结构
图5-8 二叉树的二叉链表表示示意图
为了方便访问某结点的双亲,还可以给链表结点增加一个双亲字段parent,用来指向其双亲结点。每个结点由四个域组成,其结点结构为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/05/a1f721046cfb8e8cd139cc6a70a970da.png)
这种存储结构既便于查找孩子结点,又便于查找双亲结点;但是,相对于二叉链表存储结构而言,它增加了空间开销。利用这样的结点结构表示的二叉树的链式存储结构被称为三叉链表。
图5-9给出了图5-8 (a)所示的一棵二叉树的三叉链表表示。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/05/506817dd6bc931adadbb0cfa1ffda623.png)
图5-9二叉树的三叉链表表示示意图
尽管在二叉链表中无法由结点直接找到其双亲,但由于二叉链表结构灵活,操作方便,对于一般情况的二叉树,甚至比顺序存储结构还节省空间。因此,二叉链表是最常用的二叉树存储方式。
结构5-2二叉树的链式存储
相关文章推荐
- 二叉树的二叉链表表示与实现
- 二叉树的二叉链表存储表示
- 二叉树的二叉链表表示与实现
- 利用栈,求以二叉链表表示的二叉树中的两个结点的最近共同祖先
- 广义表表示二叉树结构生成二叉链表的算法
- 二叉树的简单介绍和二叉树的二叉链表存储表示
- 数据结构(严蔚敏)二叉树的二叉链表存储表示
- 数据结构之---C语言实现二叉树的二叉链表存储表示
- 二叉树的二叉链表表示与实现
- 二叉树的二叉链表表示与实现
- 第6章 树和二叉树——递归方法先序、中序、后序遍历二叉链表表示的二叉树
- 数据结构学习笔记(三) 树形结构之一般二叉树的顺序存储_二叉链表表示法_转换
- 二叉树的二叉链表表示与实现
- 二叉树采用二叉链表结构表示。设计并实现如下算法:后序递归建树,先序非递归遍历该树。
- 二叉树采用二叉链表结构表示。设计并实现如下算法:输入某棵二叉树的广义表形式,建立该二叉树,并按层次遍历该二叉树。
- 二叉树的二叉链表表示与实现
- 普通二叉树转二叉链表(孩子兄弟表示法)
- 二叉链表表示的二叉树和一些基本操作
- 普通二叉树转二叉链表(孩子兄弟表示法)
- 6-7-树的二叉链表(孩子-兄弟)存储表示-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版