二叉树的存储结构

来源:互联网 发布:农村淘宝是干嘛的 编辑:程序博客网 时间:2024/06/16 21:43

二叉树的存储结构可以分为顺序存储结构和链式存储结构。

二叉树的顺序存储结构:

就是将二叉树中各个节点的值按照一定的顺序存放在一组地址连续的存储单元中。

由于二叉树本身是非线性结构,所以首先要对二叉树中的节点进行排序,从而确定各个节点的逻辑关系。例如可以从根节点开始自上而下按层进行编号,如图所示:


按照节点的排序规则决定了节点在存储单元中的相对位置,而且我们发现这种存储结构非常适合存储完全二叉树,在这种情况下,存储空间的利用率也是最高的。对于非完全二叉树,可以补全为完全二叉树,在进行顺序存储的时候只需要将补进入的节点置空(不放任何值),但是这就带来了存储空间利用率低下的问题。

二叉树的链式存储结构:

二叉式的链式存储就是将二叉树中的各个节点随机的存放在位置任意的内容空间中,各个节点之间的逻辑关系通过指针来反应。(这种随机只是指存储地址的相对随机性,就是存储地址可以不连续)。链式存储结构又可以分为二叉链表结构和三叉链表结构。其中二叉链表结构中,每个节点设置有三个域:数据域、左孩子域和右孩子域,数据域用来存储节点的值,左右孩子域存储的是其左右孩子节点的存储地址(其实就是两个指针)。三叉链表结构在二叉链表结构上增加了一个父节点域用于存放该节点的父节点的存储地址,具体结构示意图如下:


相比二叉链表结构,三叉链表结构增加了一个父节点指针带来的好处是便于查找双亲节点,但是也增加了存储空间的开销。在实际应用中常常用二叉链表结构用于表示二叉树。

无论是二叉树的二叉链式还是三叉链式存储结构又可以分为带头结点的和不带头节点的。


原创粉丝点击