二叉树链式存储结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
链式存储结构
1.结点的结构
二叉树的每个结点最多有两个孩子。用链接方式存储二叉树时,每个结点除了存储结点本身的数据外,还应设置两个指针域lchild和rchild,分别指向该结点的左孩子和右孩子。结点的结构为:
2.结点的类型说明
typedef char DataType;//用户可根据具体应用定义DataType的实际类型
typedef struct node{
DataType data;
Struct node *lchild,*rchild;//左右孩子指针
}BinTNode;//结点类型
typedef BinTNode *BinTree;//BinTree为指向BinTNode类型结点的指针类型
3.二叉链表(二叉树的常用链式存储结构)
在一棵二叉树中,所有类型为BinTNode的结点,再加上一个指向开始结点(即根结点)的BinTree型头指针(即根指针)root,就构成了二叉树的链式存储结构,并将其称为二叉链表。
【例】下面左图所示二叉树的二叉链表如下面中图所示。
注意:
①一个二叉链表由根指针root惟一确定。若二叉树为空,则root=NULL;若结点的某个孩子不存在,则相应的指针为空。
②具有n个结点的二叉链表中,共有2n个指针域。其中只有n-1个用来指示结点的左、右孩子,其余的n+1个指针域为空。
注意:
二叉树存储方法的选择,主要依赖于所要实施的各种运算的频度。