大话数据结构4 - 树

线性结构:一对一
树结构:一对多

树:是n(n>=0)个结点的有限集

树tree
空树,根root,子树subtree
注意:根结点是唯一的,子树之间一定互不相交
结点:包含一个数据元素和子树分支
结点分类:根结点、内部结点、叶结点/终端结点leaf
结点的度,树的度degree
结点的关系:孩子child、双亲parent、兄弟sibling,堂兄弟,祖先、子孙
注意:结点的子树的根不是该结点,而是该结点孩子
结点的层次level,树的深度/高度depth
有序树,无序树
森林forest

树的抽象数据类型
树中结点具有相同数据类型及层次关系

树的存储结构,前驱、后继
双亲表示法:纯数组法,顺序存储
孩子表示法:数组+单链表,顺序存储+链式存储
孩子兄弟表示法:链式存储,二叉树
注意:头指针指向根结点

二叉树
每个结点最多有两棵子树,度不大于2
左右子树有序
只有一棵子树也要有序
特殊二叉树:斜树、满二叉树、完全二叉树
二叉树的性质
二叉树的顺序存储结构:一般只用于完全二叉树
二叉树的链式存储结构:二叉链表,三叉链表,线索链表

遍历二叉树,次序、访问、所有结点、有且仅有一次被访问
遍历次序,从左到右:前序遍历(根左右)、中序遍历(左根右)、后序遍历(左右根)、层序遍历
算法:递归调用
遍历结果的推导

二叉树的创建:扩展二叉树,使用遍历的方式实现二叉树的建立

线索二叉树:线索,线索链表,线索二叉树,双向链表
线索化,标志域:ltag、rtag,添加一个头结点
线索化的实质就是将二叉链表中的空指针改为指向前驱或后继的线索
线索化的过程就是在遍历的过程中修改空指针的过程
线索二叉链表的存储结构的使用:需要经常遍历、需要查找结点在某遍历中的前驱或后继

树、森林与二叉树的转换

赫夫曼树、最优二叉树:带权路径长度WPL
赫夫曼编码:最基本的压缩编码方法
前缀编码
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章