数据结构学习笔记——二叉树的存储结构
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个。
不同的存储结构实现二叉树的操作也不同。如要找某个结点的父节点,在三叉链表中很容易实现,在二叉链表中则需要从根指针出发一一查找。所以,在具体应用中,需要根据二叉树的形态和需要进行的操作来决定二叉树的存储结构。
相关文章推荐
- JAVA学习笔记 -- 数据结构
- c语言实现十字链表储存有向图(《数据结构》算法7.3)
- 基于LinkedList实现的固定大小线性排序数据结构
- [数据结构]七种排序算法小结
- 数据结构(6)--栈的应用之中缀表达式求值
- poj 2010(优先队列)
- Java数据结构----图的基础知识
- 数据结构:(平衡树,链表)BZOJ 1588[HNOI2002]营业额统计
- poj 1988(并查集)
- [置顶]C#中使用Redis不同数据结构的内存占有量的疑问和对比测试
- SDUT_2141_数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- Python中的数据结构和面向对象设计模式的算法
- 数据结构基础之串
- 数据结构基础之队列
- MySQL索引背后的数据结构及算法原理
- nginx源码初读(2)--让烦恼从数据结构开始(ngx_buf/ngx_chain)
- 数据结构与算法——图
- poj 1451(Trie)
- iOS学习_Lesson01_数据结构
- 关于VFS文件系统中的superblock、inode、d_entry和file数据结构