数据结构的学习之路(三)--树
来源:互联网 发布:中国海外间谍知乎 编辑:程序博客网 时间:2024/04/29 12:02
1.树的定义
树是n(n>=0)个节点的有限集。n=0时称为空树。在任意一颗非空树中:有且仅有一个特定的节点称为根的节点;当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,……,Tm,其中每一个集合本身又是一颗树,并且称为根的子树。
对比树的结构和线性结构:
线性结构:第一个数据元素,无前驱;
最后一个数据元素,无后继;
中间元素,一个前驱一个后继。
树结构:无双亲,唯一;
叶节点,无孩子,可以多个;
中间结点,一个双亲多个孩子。
2.树的存储结构
双亲表示法:在每个节点中,附设一个指示器指示其双亲节点在数组中的位置。
孩子表示法:每个节点有多个指针域,其中每个执政指向一颗子树的根节点,把这种表示方法叫做多重链表表示法。
孩子兄弟表示法:任意一颗树,他的节点的第一个孩子如果存在就是唯一的,他的右兄弟如果存在也是唯一的。因此,设置两个指针,分别指向该节点的第一个孩子和此节点的右兄弟。
3.二叉树的存储结构
顺序存储结构一般只用于完全二叉树。
链式存储结构,二叉链表:二叉树没个基点最多有两个孩子,所以他设计一个数据域和两个指针域是比较自然的想法。如果有需要,还可以再增加一个指向其双亲的指针域,那样就称为三叉链表了。
4.遍历二叉树
前序遍历,中序遍历,后序遍历,层序遍历
线索二叉树:把这种指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表。对二叉树以莫中次序遍历使其变为线索二叉树的过程称做是线索化。线索化的过程就是在遍历的过程中修改空指针的过程。
0 0
- 数据结构的学习之路(三)--树
- 数据结构学习笔记之三(二叉树)
- 数据结构学习(三)
- Redis学习(三)Redis的数据结构
- 数据结构之树的学习
- 数据结构进阶(三)数据结构之树的遍历
- 数据结构学习之-二叉树的三种递归遍历C++实现及相关应用
- 数据结构之三(二叉查找树)
- 学习笔记之数据结构与算法(三)
- (三)Android数据结构学习之队列
- 数据结构学习笔记(三)
- 数据结构学习笔记(三)
- 数据结构学习笔记(三)
- 数据结构学习笔记(三)
- 数据结构之栈(三)
- 数据结构之队列(三)
- 数据结构学习之树 (一)【树的表示方法】
- 我的数据结构学习之路(一)------单链表初长成
- 原生js实现对Ajax的封装(模仿jquery)
- javascript BOM
- 树的最长链
- 关于压缩jar包时提示*.*没有这个文件或目录的问题以及解决办法:
- 如何在 Linux 中启用 Shell 脚本的调试模式
- 数据结构的学习之路(三)--树
- Singleton
- weak_ptr源码分析
- CodeForces 456C - Boredom(DP)
- linux关于网络的命令介绍
- HDU 5934 Bomb(强连通缩点)
- CentOS安装MySQL与登录退出
- 运维请注意:”非常危险“的Linux命令大全
- HDU 5938 - Four Operation(贪心)