数据结构_树

树形结构

———其实这是很简单又很难得一些东西

1 定义

树状图是一种数据结构,它是由\(n (n>=1)\)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。

树(tree)是包含$ n(n>0)$个结点的有穷集,其中:

1)每个元素称为结点(node)

2)有一个特定的结点被称为根结点或树根(root)

3)除根结点之外的其余数据元素被分为\(m(m≥0)\)个互不相交的集合\(T_1,T_2,\cdots T_{m-1}\),其中每一个集合\(T_i(1<=i<=m)\)本身也是一棵树,被称作原树的子树(subtree)

2 特性

树要满足一些特性:

1)树上两点间有且只有一条路径(不走重复路径)

2)每个节点有零个或多个子节点

3)没有父节点的节点称为根节点

4)每一个非根节点有且只有一个父节点

5)除了根节点外,每个子节点可以分为多个不相交的子树

3 有关术语&常用语(看看就好)

1)节点的度:一个节点含有的子树的个数称为该节点的度;

2)叶节点或终端节点:度为0的节点称为叶节点;

3)非终端节点或分支节点:度不为0的节点;

4)双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;

5)孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;

6)兄弟节点:具有相同父节点的节点互称为兄弟节点;

7)树的度:一棵树中,最大的节点的度称为树的度;

8)节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;

9)树的高度或深度:树中节点的最大层次;

10)堂兄弟节点:双亲在同一层的节点互为堂兄弟;

11)节点的祖先:从根到该节点所经分支上的所有节点;

12)子孙:以某节点为根的子树中任一节点都称为该节点的子孙。

13)森林:由m(m>=0)棵互不相交的树的集合称为森林;

4 一些种类的树

1)二叉树

2)线段树

3)平衡树(如splay,treap,替罪羊树等)

4)trie字符树

5)……

5 有关算法&数据结构

传统“树论”:

1)各种维护数据结构,如[NOI2005]维护数列

2)树链剖分,如树链剖分

3)树上乱搞(LCA,dp,倍增等),如[LNOI2014]LCA

4)……

原文地址:https://www.cnblogs.com/ezoihy/p/9116282.html

时间: 2024-08-05 15:12:03

数据结构_树的相关文章

C#数据结构_树

树的定义是递归的,用树来定义树.因此,树(以及二叉 树)的许多算法都使用了递归. 结点(Node):表示树中的数据元素. 结点的度(Degree of Node):结点所拥有的子树的个数. 树的度(Degree of Tree):树中各结点度的最大值. 叶子结点(Leaf  Node):度为 0 的结点,也叫终端结点. 结点的层次(Level of Node):从根结点到树中某结点所经路径上的分支 数称为该结点的层次.根结点的层次规定为 1,其余结点的层次等于其双亲结点 的层次加 1. 二叉树的

数据结构(12)_树的概念及通用树的实现

1.树的定义与操作 1.1.树的相关定义 1.树的定义 树是一种非线性的数据结构,右n(n>=0)个结点组成的有限集合,如果n=0,称为空树,如果n>0,则: 有一个特定的结点被称之为跟结点(root),根结点只有直接后继,没有前驱, 除根结点外的其他结点划分为m(m>=0)个互不相交的有限集合T0,T1...Tm-1,每一个集合又是一颗子树,并称之为跟的子树.树的示例如下: 2.树中度的概念 树的结点包含一个数据及如果指向子树的分支,结点拥有的子树数目称为结点的度(度为0的结点称为叶结

数据结构_课程设计——并查集:检查网络

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 这两天做数据结构课程设计,因为以前做过ACM题,感觉还可以,不是很难呀 ~~~~并查集:检查网络~~~~ 题目要求: 给定一个计算机网络以及机器间的双向连线列表,每一条连线允许两端的计算机进行直接的文件传输,其他计算机间若存在一条连通路径,也可以进行间接的文件传

数据结构_课程设计——最小生成树:室内布线

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 这道课程设计,费不少时间,太麻烦了= =.(明明是能力不够) ~~~~最小生成树:室内布线~~~~ 题目要求: 装修新房子是一项颇为复杂的工程,现在需要写个程序帮助房主设计室内电线的布局. 首先,墙壁上插座的位置是固定的.插座间需要有电线相连,而且要布置的整齐美

数据结构-伸展树

声明:本文是对某高中生的竞赛论文学习的文章 介绍: 二叉查找树能够支持多种动态集合操作.对于一个含有n个结点的完全二叉树,这些操作的最还情况运行时间是O(lgn),但如果树是含有n个结点的线性链,则这些操作的最坏情况运行时间为O(n).而像红黑树.AVL树这种二叉查找树的变形在最坏情况下,仍能保持较好性能. 本文将要介绍的伸展树也是二叉查找树的变形,它对空间要求及编程难度的要求相对不高. 伸展树: 伸展树与二叉查找树一样,具有有序性.即伸展树的每一个结点x满足:该结点的左子树中的每个元素都小于x

javascript实现数据结构: 树和森林

树的3种常用链表结构 1 双亲表示法(顺序存储结构) 优点:parent(tree, x)操作可以在常量时间内实现 缺点:求结点的孩子时需要遍历整个结构 用一组连续的存储空间来存储树的结点,同时在每个结点中附加一个指示器(整数域) ,用以指示双亲结点的位置(下标值) . 图所示是一棵树及其双亲表示的存储结构.这种存储结构利用了任一结点的父结点唯一的性质.可以方便地直接找到任一结点的父结点,但求结点的子结点时需要扫描整个数组. 代码实现: 1 // 1.双亲表示法 2 // 优点:parent(t

javascript实现数据结构: 树和二叉树,二叉树的遍历和基本操作

树型结构是一类非常重要的非线性结构.直观地,树型结构是以分支关系定义的层次结构. 树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结构:在数据库系统中,可用树来组织信息:在分析算法的行为时,可用树来描述其执行过程等等. 下面讲解的内容完整代码在这:https://github.com/LukeLin/data-structure-with-js/blob/master/Binary%20tree/BinaryTree.js 首先看看树的一些概念: 1.树(Tree)是n

.Net常用技巧_树控件工具类

using System; using System.Collections.Generic; using System.Text; using System.Collections; using DevComponents.AdvTree; namespace MyUtility { /// <summary> /// 树控件工具类 /// </summary> public class TreeTool { ArrayList selectArray = new ArrayLi

HDU 4902 Nice boat(数据结构-线段树)

Nice boat Problem Description There is an old country and the king fell in love with a devil. The devil always asks the king to do some crazy things. Although the king used to be wise and beloved by his people. Now he is just like a boy in love and c