您的位置:首页 > 理论基础 > 数据结构算法

数据结构学习笔记——二叉树的存储结构

2016-02-20 15:13 746 查看

二叉树的顺序存储表示

// 二叉树的顺序存储表示
#define MAX_TREE_SIZE 100 // 二叉树的最大结点数
typedef TElemType SqBiTree[MAX_TREE_SIZE]; // 0号单元存储根结点

struct position
{
int level,order; // 结点的层,本层序号(按满二叉树计算)
};


二叉树的顺序存储结构是讲二叉树按照完全二叉树的形式依次存储,常常导致浪费大量存储空间,所以这种存储结构一般不用。

二叉树的链式存储结构

二叉链表

//二叉树的二叉链表存储表示
typedef struct BiTNode
{
TElemType data;
BiTNode *lchild,*rchild; // 左右孩子指针
}BiTNode,


三叉链表

//二叉树的三叉链表存储表示
typedef struct BiTPNode
{
TElemType data;
BiTPNode *parent,*lchild,*rchild; // 双亲、左右孩子指针
}BiTPNode,*BiPTree;


三叉链表在二叉链表的基础上增加了双亲结点的指针域

若一个二叉树含有n个结点,则它的二叉链表中必含有2n个指针域,其中必有n+1个空的链域。

证明:分支数目B=n-1,即非空的链域有n-1个,故空链域有2n-(n-1)=n+1个。

不同的存储结构实现二叉树的操作也不同。如要找某个结点的父节点,在三叉链表中很容易实现,在二叉链表中则需要从根指针出发一一查找。所以,在具体应用中,需要根据二叉树的形态和需要进行的操作来决定二叉树的存储结构。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: