数据结构系列(5)树状结构
来源:互联网 发布:宜家床垫 知乎 编辑:程序博客网 时间:2024/05/19 12:27
5树状结构
“树”是有一个或一个以上的节点组成,存在一个特殊的节点,称为树根。每个节点是一些数据和指针组合而成的记录。除了树根,其余节点可分为n>=0个互斥的集合,其中每一个子集合本身也是一种树状结构,即此根节点的子树。此外一棵合法的树,节点间可以互相连接,但不能形成无出口的回路。
5.1 专有名词介绍
- 度数:每个节点所有子树的个数。
- 层数:树的层数。
- 高度:输的最大层数
- 树叶或称终端节点:度数为零的节点就是树叶。
- 父节点:每一个节点有连接的上一层节点
- 子节点:每一个节点有连接的下一层节点。
- 祖先和子孙:祖先是指从树根到该节点路径上所包含的节点,而子孙是在该节点往下追溯子树中的任一节点。
- 兄弟节点:有共同父节点的节点。
- 非终端节点:树叶以外的节点。
- 同代:在同一棵中具有相同层数的节点。
5.2 二叉树
二叉树的特性:
1. 层数为i的树,他的节点数最多是
2. 度数为k的二叉树总节点数是
3. 对于任何非空二叉树T,如果
4. 高度为k的二叉树,总结点对少为k.
特殊二叉树
完全二叉树:
如果二叉树的高度为h,所含的节点数小于
严格二叉树:
二叉树中每一个非终端节点均有非空的左右子树。
5.3 二叉树的存储方式
二叉树的存储方式有很多,一般在数据结构的领域中习惯用链表来表示二叉树组织。用一位数组来表示时对树中间节点进行插入删除操作时,需要大量移动来反应节点的变动。
一维数组表式法
使用有序的一维数组来表示二叉树,首先可将此二叉树假想为一棵满二叉树,而且第K层具有2k-1个节点,他们按序存放在这个一维数组中。
链表表式法
由于二叉树最多只能有两个子节点,就是度数小鱼或等于2,而所谓链表表式法,就是利用链表来存储二叉树。就是运用动态分配内存的指针的方式来建立二叉树。
是用链表来表示二叉树的好处是节点的增加和删除操作相当容易,缺点是很难找到父节点,除非每一节点增加一个指向父节点的指针。
5.4二叉树的遍历
前序遍历:
是一种”中左右“的遍历顺序,也就是先从根节点遍历,再往左方移动,当无法继续时,继续向右方移动,接着再重复执行此步骤。
中序遍历:
是左中右的遍历顺序,也就是从树的左侧逐步向下方移动,知道无法移动,在访问此节点,并向右移动一个节点。如果无法再向右移动时,可以返回上层父节点,后右子树。
后序遍历:
后序遍历是左右中的遍历顺序,就是先遍历左子树,在便利右子树,最后遍历根节点,反复执行此步骤。
5.5线索二叉树
二叉树的存储方式,节点存储空间的浪费率可以从2/3降到1/2,对于一棵有n个节点的二叉树,实际上用来指向左右两节点的指针只有n-1个链接,另外的n+1个指针都是空连接。
所谓线索二叉树就是把这些空的链接加以利用,再指到树的其他节点,这些链接就称为线索。
- 数据结构系列(5)树状结构
- java图解数据结构--树状结构
- 树状数组(数据结构)
- 树状结构(经典)
- (13)树状结构
- 树状结构
- 树状结构
- 树状结构
- json转树状结构(js)
- json转树状结构(js)
- 数据结构系列(一)
- 算法系列(七)数据结构之树的基本结构和二叉树的遍历
- 数据结构入门学习系列-7(栈的结构以及存储方式和算法)
- ACM斩草除根系列(一) 树状数组
- 数据结构与算法系列-树-二叉树存储结构
- 数据结构和算法系列 - 双向链表结构
- 数据结构之树状数组
- 数据结构之树状数组
- 反腐剧《人民的名义》大结局提前看
- ServletConfig
- Struts 04
- slf4j + logback eclipse控制台无法打印输出问题
- ProgressBar:自定义旋转图片
- 数据结构系列(5)树状结构
- WCF之服务寄宿
- PAT 1062 乙等 (最简分数)c++ 版本
- PetaPoco 执行存储过程
- 猫都能学会的Unity3D Shader入门指南(一)
- 运算符
- Java全站乱码终极解决方案
- 【前端攻城狮之路】CSS三列布局——两侧固定宽度、中间自适应
- 题目1442:A sequence of numbers