爱看书吧 通过搜索各大小说站为您自动抓取各类小说的最快更新供您阅读!

一棵树中每两个点之间都有且只有一条路径(指没有重复边的路径)。一颗有N个点的树有N-1条边,也就是连接N个点所需要的最少边数。所以如果去掉树中的一条边,树就会不连通。

如果在一棵树中加入任意的一条边,就会得到有且只有一个环的图。这是因为这条边连接的两个点(或是一个点)中有且只有一条路径,这条路径和新加的边连在一起就是一个环。如果把一个连通图中的多余边全部删除,所构成的树叫做这个图的生成树。

如果要在树中加入一个点,就要加入一条这个点和原有的点相连的边。这条边不会给这棵树增加一个环或者多余的路径。所以每次这样加入一个点,就可以构成一棵树。

一棵树既可以是有向的也可以是无向的。显然,树是连通图,但不会是双连通图(对于无向图)或者强连通图(对于有向图)。树可以算是稀疏图。

显然树中也没有自环和重复边。

定义

如果一个无向简单图G满足以下相互等价的条件之一,那么G是一棵树:

G是没有回路的连通图。

G没有回路,但是在G内添加任意一条边,就会形成一个回路。

G是连通的,但是如果去掉任意一条边,就不再连通。

G是连通的,并且3顶点的完全图不是G的子图。

G内的任意两个顶点能被唯一路径所连通。

如果无向简单图G有有限个顶点(设为n个顶点),那么G是一棵树还等价于:

G是连通的,有n−1条边,并且G没有简单回路。

如果一个无向简单图G中没有简单回路,那么G是森林。

性质

一棵树中每两个点之间都有且只有一条路径(指没有重复边的路径)。一颗有N个点的树有N-1条边,也就是连接N个点所需要的最少边数。所以如果去掉树中的一条边,树就会不连通。

如果在一棵树中加入任意的一条边,就会得到有且只有一个环的图。这是因为这条边连接的两个点(或是一个点)中有且只有一条路径,这条路径和新加的边连在一起就是一个环。如果把一个连通图中的多余边全部删除,所构成的树叫做这个图的生成树。

如果要在树中加入一个点,就要加入一条这个点和原有的点相连的边。这条边不会给这棵树增加一个环或者多余的路径。所以每次这样加入一个点,就可以构成一棵树。

一棵树既可以是有向的也可以是无向的。显然,树是连通图,但不会是双连通图(对于无向图)或者强连通图(对于有向图)。树可以算是稀疏图。

显然树中也没有自环和重复边。

有根树

在一棵树中可以指定一个特殊的节点:根。一个有根的树叫做有根树。

有根树中的节点可以根据到根的距离分层。一颗有根树的层数叫做这棵树的高度。节点最多的那一层的节点数叫做这棵树的宽度。对于有根树,每条边都有一个特殊的方向:指向根节点的方向,或者说上一层的方向(或者相反的,指向叶节点的方向,下一层的方向)。一条边的两个端点中,靠近根的那个节点叫做另一个节点的父节点(也叫父亲、双亲、双亲节点),相反的,距离根比较远的那个节点叫做另一个节点的子节点(也可以叫孩子,儿子,子女等)。父亲方向的所有节点都叫做这个节点的祖先,儿子方向的所有节点都叫做这个节点的子孙。没有子节点的子节点叫做叶节点(或者叶子节点)。由于到根的路径只有一条,根节点以外的节点的父节点永远只有一个,祖先就是这个点到根的路径上的所有节点(包括根,不包括这个节点本身)。另外,以一个节点为根的树是指包括这个节点和其所有子孙,并以这个节点为根的树。由于一般不需要这以外的子树,每一个节点也可以对应到一个以其为根的树,一个节点的子树通常也是指以这个节点的子节点为根的树。

如果一颗有根树每个节点的子树最多有n个,同时每个节点在其父节点中都有固定的可能可以留空的位置,这棵树叫做n叉树。其中每个节点都可以有两个固定位置的子树的有根树叫做二叉树,二叉树中每个节点的两个子树分别叫做左子树和右子树,由于位置固定,没有左子树的时候也是可以有右子树的。而“多叉树”通常并不指n为任意值的n叉树,只是在和n叉树作比较的时候表示普通的有根树。

对于随机的树,高度的平均复杂度是O(logn),但是没有限制而且不随机的树高度也可以达到O(n),也就是除了叶节点都只有一个子树,或者常数个分支的情况。所以树作为数据结构时通常需要另外进行平衡。

存储

对于普通的树,可以像图一样为每一个点存储一个边表(通常按顺序存和每一个点的关系的叫做邻接矩阵,存具体的边的叫做邻接表),或者直接存储所有边的边表等。由于树是稀疏图,所以一般不用邻接矩阵存储。对于有根树,如果用为每一个点储存一个边表的方法,由于每一棵树都只有一个父节点,所以通常指向父节点的边不存在这个表中。同时如果子节点是没有顺序的,也是因为一个节点的子节点不会同时是其他节点的子节点,也可以把子节点直接当成存边的链表的节点,这时候每个节点只需要储存两个指针,所以这种存储方法有时候也会被叫做多叉树转二叉树。

对于子节点是有顺序的有根树,每条边都可以以固定的位置分别储存。对于完全二叉树甚至能直接用一个数组访问所有节点,不另外储存边的信息。有的树可以被设计成固定的从根节点开始访问,这时候可以不储存父节点。同样的,有的树也可以省略子节点,例如并查集。

树。。。。。

说小于顶点数。

,以及合并两个集合等。

加载更多

喜欢我哥居然成神了请大家收藏:(www.aikansu8.com)我哥居然成神了爱看书吧更新速度全网最快。

爱看书吧推荐阅读: 剑傲九天铁血封神万妖圣祖人在原神,正在说书巫师之旅我开局成了大帝纯阳武神还能不能好好修炼了龙纹战神猎魔人在霍格沃茨全职法师之白龙耀世神府丹尊剑武神尊我在玄幻世界冒充天机神算巫界征途厉害了我的原始人异界拳皇之风云再起大胆妖参放开我七界武神太古真龙诀因为怕痛所以全点防御力了超越狂暴升级画天武道至尊熟练度之王箭魔恶魔的异界征途大主宰九天造化诀神级武魂全职法师之亡灵法师大帝之召唤千军太古星辰诀末日灵宠修练系统修罗神帝地煞七十二变隋唐之杨家废子洪荒:我反派,开局收复三千魔神祸福符我有一个熟练度面板不死帝尊极灵混沌决我都元婴了外挂才来五州精要纪全球修真骑士征程五行传奇之修罗至尊凌天战尊万古大帝玄幻:我竟然是天命反派
爱看书吧搜藏榜: 极道武学修改器我能复制天赋玄幻:我!天命大反派万古最强宗直播当皇帝白银霸主我有一个神级吞噬系统蜀山签到百年成绝世剑仙人族镇守使我的魔法时代无限进化从手机开始牧龙师道诡异仙神门苟在水世界斗破苍穹僵尸世界:我成了任老太爷我能给御兽加载扮演模板这个和尚种田就变强开局签到满级气运至尊修罗挥羽问情弑魂霸天林德之门超级秒杀系统遮天之我是狠人她哥一键修炼百万级夫人你不会是罗刹殿主吧?仙武世界:开局陆地剑仙直播:我在深渊当魔王漫威魔法事件簿万武天尊幻界星辰三人行必有女汉子苍龙铭躲在冷宫苟成大佬战神图戮开局签到百万日我的前女友成了绝世大佬魔天战纪魔凌九霄地窟求生:我能找到正确路线弥世界玄幻:我真不是逆天高手极道天人武动九天齐天大妖海王祭天才魔法师与天然呆勇者重生之大皇帝
爱看书吧最新小说: 机械神皇诡异:我有梦境小世界仙武长生:我将低武练成了仙武道视长生绝世唐门之铁血日月一觉醒来我成了现世唯一真神活不过二十,所以十九岁无敌了!徒弟太勤奋显得师父有点懒十方天士万骨开局一根木头棒子,从大山开始臣本奸佞弑魂霸天天阳圣尊极武战神异界流氓战医血龙骄雄召唤军火战魔百美仙图:女神宝鉴鸿蒙道之幻世逍遥战鼎龙逍遥异界魔君剑葬神灵异世药王近战法师斗魄苍穹龙破苍穹斗魔战记异界全职高手武绝苍穹逆天神器大圣贤文武双修雷公在异世吞天神体异能行者异界纵横异世之光环召唤师异界武神兽武乾坤以文成神异界星辰至尊武道乾坤斗破苍穹之斗帝大陆掌御九天横扫异界之无敌天尊魔尊星河九转斗魂