从零开始学【树】
来源:互联网 发布:软件天空破解版 编辑:程序博客网 时间:2024/05/16 18:17
在之前做二级的题的时候,偶尔会碰见二叉树,很自然的就想起了树,那么什么是树呢?这里说的可不是外面的参天大树,而是有实际概念的树,下面就来介绍一下树。
1、树的基本概念
树是由n(n≥0)个结点组成的有限集合。若n=0,称为空树;若n>0,则:
(1)有一个特定的称为根(root)的结点。它只有直接后继,但没有直接前驱;
( 2)除根结点以外的其它结点可以划分为m(m≥0)个互不相交的有限集合T0,T1,…,Tm-1,每个集合Ti(i=0,1,…,m-1)又是一棵树,称为根的子树,每棵子树的根结点有且仅有一个直接前驱,但可以有0个或多个直接后继。
2、树的逻辑结构描述
tree =(k,R)
k={ki∣1≤i≤n;n≥0,kielemtype}
R={r}
其中,n为树中结点个数,若 n=0,则为一棵空树, n> 0时称为一棵非空树,而关系 r 应满足下列条件:
(1)有且仅有一个结点没有前驱,称该结点为树根;
(2)除根结点以外,其余每个结点有且仅有一个直接前驱;
(3)树中每个结点可以有多个直接后继(孩子结点)
3、基本术语
(1)结点指树中的一个数据元素,一般用一个字母表示。
(2)结点的度
一个结点包含子树的数目,称为该结点的度。
(3)树叶(叶子)
度为0的结点,称为叶子结点或树叶,也叫终端结点。
(4)孩子结点
若结点X有子树,则子树的根结点为X的孩子结点,也称为孩子,儿子,子女等。
(5)双亲结点
若结点X有子女Y,则X为Y的双亲结点。
(6)兄弟结点
具有同一个双亲的结点,称为兄弟结点。
(7)分枝结点
除叶子结点外的所有结点,为分枝结点,也叫非终端结点。
(8)子孙结点
某一结点的子女及子女的子女都为该结点子孙。
(9)祖先结点
从根结点到该结点所经过分枝上的所有结点为该结点的祖先
(10)层数
根结点的层数为1,其它结点的层数为从根结点到该结点所经过的分支数目再加1。
(11) 树的高度(深度)
树中结点所处的最大层数称为树的高度,如空树的高度为0,只有一个根结点的树高度为1。
(12)树的度
树中结点度的最大值称为树的度。
(13) 有序树
若一棵树中所有子树从左到右的排序是有顺序的,不能颠倒次序。称该树为有序树。
(14 ) 无序树
若一棵树中所有子树的次序无关紧要,则称为无序树。
(15)森林(树林)
若干棵互不相交的树组成的集合为森林。一棵树可以看成是一个特殊的森林。
4、具体实例:
1、A的度为2,B的度为3,树的度为3;
2、A,B,C,E为分支结点,D,H,I,F,G为叶子结点;
3、B,C为A的孩子结点;A为B,C的双亲结点;B,C互为兄弟结点;H的祖先结点为A,B,E;B的子孙结点为D,E,F,H,I。
4、A在1层,B,C在2层,D,E,F,G在3层,H,I在4层,树的深度为4;
5、对于一棵反映父子关系的家族树,兄弟结点之间是按照排行大小有序的,所以它是一棵有序树。
小结:本博客主要是梳理知识点,并没有自己太多的理解,只能说通过梳理,更加深刻的理解了树。
3.树叶(叶9.分枝结点
除叶子结点外的所有结点,为分枝结点,也叫非终端结点。子)
度为0的结点,称为叶子结点或树叶,也叫终端结点。
树的逻辑结构描述
- 从零开始学【树】
- 从零开始学
- --------------------《洪恩从零开始学日语》---------------------------
- 洪恩从零开始学日语
- 从零开始学Shark(转载)
- 从零开始学炒股
- 从零开始学计算机语言
- 从零开始学建网
- 高中毕业从零开始学
- 从零开始学GIS
- 怎样从零开始学J2EE
- 从零开始学Java (一)
- 从零开始学Android
- 从零开始学股票
- 从零开始学Oracle(一至五)
- 从零开始学ASP.NET
- 从零开始学电路基础
- 从零开始学AVR
- java线程中异常的处理 -Java 7 Concurrency Cookbook 读书笔记
- 杭电2602---01背包
- Linux 用户身份切换
- 【LeetCode从零单刷】H-index I & II
- InvocationTargetException异常
- 从零开始学【树】
- 原码、反码、补码之加减运算
- hdu 5510 Bazinga 2015ACM/ICPC亚洲区沈阳站现场赛
- Memcached介绍
- 03-32位UUID和封装Map对象到指定类型的Bean中
- 运行示例sparkPi计算圆周率(1.1)
- 《TCP/IP详解 卷1:协议》读书笔记 第一章
- JAVA创建String对象问题
- Android之路-启程1:前言以及为什么看好Android