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

来源:互联网 发布:vb cad二次开发源码 编辑:程序博客网 时间:2024/06/05 03:41

二叉树的顺序存储表示

// 二叉树的顺序存储表示 #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个。

不同的存储结构实现二叉树的操作也不同。如要找某个结点的父节点,在三叉链表中很容易实现,在二叉链表中则需要从根指针出发一一查找。所以,在具体应用中,需要根据二叉树的形态和需要进行的操作来决定二叉树的存储结构。

0 0
原创粉丝点击