码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树的存储表示与实现

时间:2015-07-20 23:53:19      阅读:383      评论:0      收藏:0      [点我收藏+]

标签:二叉树   存储   数组   

二叉树的顺序存储

完全二叉树的存储可以按照从上到下,从左到右的顺序依次存储在一维数组中。完全二叉树的顺序存储如图所示:

技术分享             技术分享  


如果按照从上到下,从左到右的顺序把非完全二叉树也同样的编号,将结点依次存放在一维数组中,为了能够正确反映二叉树中结点之间的逻辑关系,需要在一维数组中将二叉树中不存在的结点位置空出。

技术分享技术分享 

技术分享

顺序存储对于完全二叉树来说是比较适合的,因为采用顺序存储能够节省内存单元,并能够利用公式得到每个结点的存储位置。但是,对于非完全二叉树来说,这种存储方式会浪费内存空间。




二叉树的链式存储

在二叉树中,每一个结点有一个双亲结点和两个孩子结点。从一棵二叉树的根结点开始,通过结点的左右孩子地址就可以找到二叉树的每一个结点。因此二叉树的链式存储结构包括三个域:数据域,左孩子指针域和右孩子指针域。其中,数据域存放结点的值,左孩子指针域指向左孩子结点,右孩子指针域指向右孩子结点。这种链式存储结构称为二叉树链表存储结构


技术分享

如果二叉树采用二叉链表存储结构表示

技术分享技术分享

有时为了方便找到结点的双亲结点,在二叉链表的存储结构中增加以指向双亲结点的指针域parent,这种存储结构称为三叉链表结点存储结构。

技术分享

通常情况下,二叉树采用二叉链表进行表示。二叉链表存储结构的类型定义如下:

typedef struct Node
{
	DataType data;
	struct Node *lchild;
	struct Node *rchild;
}*Bitree,BitNode;


版权声明:本文为博主原创文章,未经博主允许不得转载。

二叉树的存储表示与实现

标签:二叉树   存储   数组   

原文地址:http://blog.csdn.net/weichanjuan3/article/details/46971739

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!