一、树状图

树状图是一种数据结构,它是由n(n>=1)个有限节点组成的具有层次关系的集合。因其结构看起来想个倒挂的树,即根朝上,叶子在下,故被称为“树”。

特点:

1. 每个节点有零个或多个子节点

2. 没有父节点的节点称为根节点

3. 每个非根节点有且只有一个父节点

图示:

二、树的种类

1. 无序树:树中任意节点的子节点之间没有顺序关系,这种树也称为自由树。

2. 有序树:树中任意节点的子节点之间有顺序关系。

2.1 二叉树:每个节点最多含有两个子树的树称为二叉树。

2.1.1 完全二叉树:对于一个二叉树,假设其深度为k(k>1)。除了第k层外,其他各层的节点数已达到最大值2^n-1(n那为深度),而第k层的节点自左向右依次连续紧密的                                                   排列,这样的树称为完全二叉树。

2.1.2 满二叉树:是完全二叉树的一个特例,即完全二叉树的最后一层的叶子节点也已经达到了最大数(2^n-1)。

2.2 霍夫曼树:带权路径最短的二叉树,又称为最优二叉树。

2.3 B树

三、树的相关术语

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

2. 树的度:一棵树中,最大的节点的度称为树的度;

3. 叶节点或终端节点:度为零的节点;

4. 非终端节点或分支节点:度不为零的节点;

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

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

7. 兄弟节点:具有相同父节点的节点互称为兄弟节点;

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

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

10. 堂兄弟节点:父节点在同一层的节点互为堂兄弟;

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

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

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

java数据结构-非线性结构之树的更多相关文章

  1. java数据结构--线性结构

    一.数据结构 数据结构由数据和结构两部分组成,就是将数据按照一定的结构组合起来,这样不同的组合方式有不同的效率,可根据需求选择不同的结构应用在相应在场景.数据结构大致 分为两类:线性结构(如数组,链表 ...

  2. [置顶] ※数据结构※→☆非线性结构(tree)☆============树结点 链式存储结构(tree node list)(十四)

    结点: 包括一个数据元素及若干个指向其它子树的分支:例如,A,B,C,D等. 在数据结构的图形表示中,对于数据集合中的每一个数据元素用中间标有元素值的方框表示,一般称之为数据结点,简称结点. 在C语言 ...

  3. ※数据结构※→☆非线性结构(tree)☆============二叉树 顺序存储结构(tree binary sequence)(十九)

    二叉树 在计算机科学中,二叉树是每个结点最多有两个子树的有序树.通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree).二叉树常被用作二叉查找树和二叉堆或是 ...

  4. Java数据结构(十)—— 树

    树 树的概念和常用术语 常用术语 节点 根节点 父节点 子节点 叶子节点:没有子节点的节点 节点的权:节点的值 路径:节点A到节点B的路径 层 子树 树的高度:最大层数 森林:多颗子树构成森林 二叉树 ...

  5. Java数据结构之树和二叉树

    从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ Java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

  6. Java数据结构和算法(四)赫夫曼树

    Java数据结构和算法(四)赫夫曼树 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 赫夫曼树又称为最优二叉树,赫夫曼树的一个 ...

  7. Java数据结构介绍(线性结构和非线性结构)

    数据结构包括:线性结构和非线性结构. 线性结构 数据元素之间存在一对一的线性关系 包括顺序存储结构和链式存储结构.顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的 链式存储的线性表称为链表,链表 ...

  8. 【Java数据结构学习笔记之一】线性表的存储结构及其代码实现

    应用程序后在那个的数据大致有四种基本的逻辑结构: 集合:数据元素之间只有"同属于一个集合"的关系 线性结构:数据元素之间存在一个对一个的关系 树形结构:数据元素之间存在一个对多个关 ...

  9. Java数据结构之树和二叉树(2)

    从这里始将要继续进行Java数据结构的相关讲解,Are you ready?Let's go~~ Java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来 ...

随机推荐

  1. PHP PhantomJs中文文档(翻译)

    介绍 PHP PhantomJS 是一个灵活的 PHP 库加载页面通过 PhantomJS 无头浏览器并将返回页面响应.这是方便于需要JavaScript的支持,同时还支持截屏测试网站.功能列表通过 ...

  2. Laravel 5.1 事件、事件监听的简单应用

    ​ 有时候当我们单纯的看 Laravel 手册的时候会有一些疑惑,比如说系统服务下的授权和事件,这些功能服务的应用场景是什么,其实如果没有经历过一定的开发经验有这些疑惑是很正常的事情,但是当我们在工作 ...

  3. jquery插件----文件上传uploadfile

    使用了一款jquery上传的插件,ajax上传,可以显示上传的进度,高可配性,简要记录. 插件地址http://hayageek.com/docs/jquery-upload-file.php git ...

  4. 简单的介绍下WPF中的MVVM框架

    最近在研究学习Swift,苹果希望它迅速取代复杂的Objective-C开发,引发了一大堆热潮去学它,放眼望去各个培训机构都已打着Swift开发0基础快速上手的招牌了.不过我觉得,等同于无C++基础上 ...

  5. 贴板子系列_1-km算法,匈牙利算法

    KM算法 #include <bits/stdc++.h> #define N 1500 #define inf 999999999 using namespace std; ,ny=,k ...

  6. Xcode 修改工程名称

    总会遇到几个项目,在做到一半的时候被要求改项目名,网上找了下相关的资料,大多数是xcode5以前的版本,所以解决好了在这里mark一下,给需要的人. 目标为:将项目名XCD4改成xcd5. 先上结果图 ...

  7. Matlab R2012b启动出现License Manager Error -15

    1.找到已安装文件目录下的etc文件夹(如:D:\programfile\matlab\R2012B\etc),找到license.dat文件,复制:2,找到已安装文件目录下的licenses文件夹( ...

  8. Tarjan系列算法总结(hdu 1827,4612,4587,4005)

    tarjan一直是我看了头大的问题,省选之前还是得好好系统的学习一下.我按照不同的算法在hdu上选题练习了一下,至少还是有了初步的认识.tarjan嘛,就是维护一个dfsnum[]和一个low[],在 ...

  9. 由tomcat启动想到的

      1.batch:批处理文件,表示一批 2.profile:轮廓 3.用户变量和系统变量的关系是什么?     答:点击"我的电脑→属性→高级"标签的"环境变量&quo ...

  10. Swift与Objective-C中的闭包

    Swift Code: func makeIncrementor(forIncrement amount: Int) -> (() -> Int,() -> Int) { func ...