二叉树的顺序存储
完全二叉树的存储可以按照从上到下,从左到右的顺序依次存储在一维数组中。完全二叉树的顺序存储如图所示:
如果按照从上到下,从左到右的顺序把非完全二叉树也同样的编号,将结点依次存放在一维数组中,为了能够正确反映二叉树中结点之间的逻辑关系,需要在一维数组中将二叉树中不存在的结点位置空出。
顺序存储对于完全二叉树来说是比较适合的,因为采用顺序存储能够节省内存单元,并能够利用公式得到每个结点的存储位置。但是,对于非完全二叉树来说,这种存储方式会浪费内存空间。
二叉树的链式存储
在二叉树中,每一个结点有一个双亲结点和两个孩子结点。从一棵二叉树的根结点开始,通过结点的左右孩子地址就可以找到二叉树的每一个结点。因此二叉树的链式存储结构包括三个域:数据域,左孩子指针域和右孩子指针域。其中,数据域存放结点的值,左孩子指针域指向左孩子结点,右孩子指针域指向右孩子结点。这种链式存储结构称为二叉树链表存储结构
如果二叉树采用二叉链表存储结构表示
有时为了方便找到结点的双亲结点,在二叉链表的存储结构中增加以指向双亲结点的指针域parent,这种存储结构称为三叉链表结点存储结构。
通常情况下,二叉树采用二叉链表进行表示。二叉链表存储结构的类型定义如下:
typedef struct Node { DataType data; struct Node *lchild; struct Node *rchild; }*Bitree,BitNode;
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/weichanjuan3/article/details/46971739