数据结构的学习之路(三)--树
2017-01-21 21:53
246 查看
1.树的定义
树是n(n>=0)个节点的有限集。n=0时称为空树。在任意一颗非空树中:有且仅有一个特定的节点称为根的节点;当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,……,Tm,其中每一个集合本身又是一颗树,并且称为根的子树。对比树的结构和线性结构:
线性结构:第一个数据元素,无前驱;
最后一个数据元素,无后继;
中间元素,一个前驱一个后继。
树结构:无双亲,唯一;
叶节点,无孩子,可以多个;
中间结点,一个双亲多个孩子。
2.树的存储结构
双亲表示法:在每个节点中,附设一个指示器指示其双亲节点在数组中的位置。孩子表示法:每个节点有多个指针域,其中每个执政指向一颗子树的根节点,把这种表示方法叫做多重链表表示法。
孩子兄弟表示法:任意一颗树,他的节点的第一个孩子如果存在就是唯一的,他的右兄弟如果存在也是唯一的。因此,设置两个指针,分别指向该节点的第一个孩子和此节点的右兄弟。
3.二叉树的存储结构
顺序存储结构一般只用于完全二叉树。链式存储结构,二叉链表:二叉树没个基点最多有两个孩子,所以他设计一个数据域和两个指针域是比较自然的想法。如果有需要,还可以再增加一个指向其双亲的指针域,那样就称为三叉链表了。
4.遍历二叉树
前序遍历,中序遍历,后序遍历,层序遍历线索二叉树:把这种指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表。对二叉树以莫中次序遍历使其变为线索二叉树的过程称做是线索化。线索化的过程就是在遍历的过程中修改空指针的过程。
相关文章推荐
- 我的数据结构学习之路(二)------栈
- 数据结构学习之路-第二章:双向链表
- 小菜数据结构于算法学习之路
- 数据结构学习之路-第三章:栈的应用
- 三剑客学习之路——数据结构(一)计算模型与算法分析(1)
- 数据结构学习之路----------线性表顺序存储结构插入和删除节点平均移动次数
- 数据结构数据结构系统学习之路
- 数据结构学习之路-第二章:循环链表
- 数据结构和算法学习之路
- 数据结构的学习之路(二)-- 栈与队列
- python学习之路-第五天-python的数据结构
- 数据结构和算法学习之路
- 我的数据结构学习之路(1)
- 嵌入式学习之路(十九)——数据结构(1)
- 数据结构和算法学习之路
- 【转载】数据结构和算法学习之路
- 数据结构的学习之路(一)--线性表
- Web开发者向桌面应用开发转型之数据结构学习
- JAVA学习之路:不走弯路,就是捷径(一)
- 一个准备学习数据结构学生的困惑