19-数据结构_树-存储
2013-08-03 15:00
10 查看
存储
面临两个问题
A. 有效节点存到线性的结构(数组)
B. 将线性存储的有效结点还原成以前的树
解决这两个问题
A. 可通过先(中/后)序转换成线性结构
B. 用无效结点将二叉树补充成完全二叉树
综上:
A. 只有完全二叉树才可以用连续的方式来存储
B. 存储一般二叉树, 必须要将其补充为完全二叉树
完全二叉树以连续的方式存储的
优点:
某个结点的子结点和父节点的编号都能计算出来.
因此,判断是否有子结点,查找其父/子节点 非常快.
缺点:
非常耗内存
转换方法:
保证任意一个结点
A. 左指针域指向它的第一个孩子
B. 右指针域指向它的下一个兄弟
只要满足此条件, 就可把普通树转换成二叉树
该二叉树一定没有右子树
森林的所有树的根结点相互为兄弟.
1, 二叉树的存储
1) 连续存储[完全二叉树]
面临两个问题
A. 有效节点存到线性的结构(数组)
B. 将线性存储的有效结点还原成以前的树
解决这两个问题
A. 可通过先(中/后)序转换成线性结构
B. 用无效结点将二叉树补充成完全二叉树
综上:
A. 只有完全二叉树才可以用连续的方式来存储
B. 存储一般二叉树, 必须要将其补充为完全二叉树
完全二叉树以连续的方式存储的
优点:
某个结点的子结点和父节点的编号都能计算出来.
因此,判断是否有子结点,查找其父/子节点 非常快.
缺点:
非常耗内存
2) 链式存储
如图. 很容易理解2, 一般树的存储
1) 双亲表示法
求父节点方便2) 孩子表示法
求子结点方便3) 双亲孩子表示法
求父结点子结点都很方便4) 二叉树表示法[孩子兄弟表示法]
把一个普通书转换成二叉树来存储转换方法:
保证任意一个结点
A. 左指针域指向它的第一个孩子
B. 右指针域指向它的下一个兄弟
只要满足此条件, 就可把普通树转换成二叉树
该二叉树一定没有右子树
3, 森林的存储
把森林转换为二叉树存储.森林的所有树的根结点相互为兄弟.
相关文章推荐
- 数据结构--二叉树(定义与存储结构)
- 10-0-静态链表存储结构-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版
- 关于python数据结构存储
- MySQL中存储与管理树型数据结构
- 数据结构-二叉树的存储结构和遍历算法(四)
- 树的孩子表示法,树的兄弟表示法,树的存储结构详解,数据结构-树的学习(2)
- 《数据结构》(C语言版)——线性表的单链表存储结构
- 【数据结构】算法5.5-5.8 广义表的头尾链表存储结构
- 数据结构学习之队列(链式存储)
- 常用数据结构之链式存储队列
- 数据结构<六>: 树的存储
- 三.学习数据结构之链表(离散存储)
- 数据结构复习笔记七:动态存储管理
- 数据结构——线性表之链式存储
- 数据结构-栈的动态顺序存储表示-初始化压栈弹栈
- 图的存储结构(邻接表)- 数据结构和算法57
- (C语言)串定长顺序存储实现(数据结构十二)
- cocos2d-x学习笔记19:记录存储3:使用摘要算法进行存档校验 推荐
- 学习 严蔚敏讲数据结构笔记19
- 5-5-广义表(头尾链表存储表示)-数组和广义表-第5章-《数据结构》课本源码-严蔚敏吴伟民版