树 (图论)

本页使用了标题或全文手工转换
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
包括ほうかつ6个顶てん,5じょう边的树
顶点v
v - 1
いろすう2

ざい图论なか英語えいごtreeいちしゅむこう英語えいごundirected graph),其中任意にんい两个顶点存在そんざい唯一ゆいいついちじょうみちみちあるもの说,ただようぼつゆうたまきてき连通图就是树。森林しんりんゆび互相交并树的集合しゅうごう。树广泛应よう计算つくえ科学かがくてきかずすえ结构なか二叉查找树うずたかTrie树以及ようかずすえ压缩てき霍夫曼树ひとしひとし

てい[编辑]

如果一个无向简单图 G 满足以下いか相互そうごとう价的条件じょうけんいちG いち

  • G ぼつゆうたまきてき连通图
  • G ぼつゆうたまきただしざい G うち添加てんか任意にんいいちじょう,就会形成けいせいいち个環。
  • G 连通,ただし如果任意にんいいちじょう边,就不さい连通。
  • G ちゅう任意にんい两顶てんあいだ存在そんざい唯一ゆいいつみちみち

如果无向简单图 G ゆう有限ゆうげん个顶てん(设为 n 个顶てん),G いち还等价于:

  • G 连通,ゆう n − 1 じょう边,并且 G ちゅうぼつゆうたまき

如果一个无向简单图 G ちゅうぼつゆうたまきG これ森林しんりん

せい[编辑]

一棵树中任两个顶点これ间都ゆう且只ゆういちじょうみちゆびぼつゆうじゅう复边てきみち)。いち棵有 n 个顶てんてき树有 n − 1 じょう,其為具有ぐゆう n 个点连通图的しょ需的最少さいしょう边数。所以ゆえん如果掉树ちゅうてきいちじょう边,树就かい连通。

如果ざい一棵树中加入任意的一条边,就会得えとくいたゆう且只ゆういち个环てき图。这是いん为这じょう边连せってき两个てんあるいち个点)中有ちゅうう且只ゆういちじょうみち,这条みちしんてき边连ざい一起就是一个环。如果一个连通图中的多余边全部删除,しょ构成てき树叫做这个图てき生成せいせい

如果ようざい树中加入かにゅういち个点,就要加入かにゅう一条这个点和原有的点相连的边。这条边不かい给这棵树增加ぞうか一个环或者多余的路径。所以ゆえん每次まいじ这样加入かにゅういち个点,就可以构なりいち棵树。

一棵树既可以是有向ゆうこうてき也可以是无向てき。显然,树是连通图ただしかいそう连通图(对于无向图)あるものつよ连通图(对于有向ゆうこう图)。树可以算まれ疏图

显然树中也没ゆう和重かずえ复边。

ゆう[编辑]

ざい一棵树中可以指定一个特殊的节点:。一個有根的树叫做ゆう

ゆう树中てき节点以根すえいたてき距离ぶん。一颗有根树的层数叫做这棵树的高度こうど。节点最多さいたてき一层的节点数叫做这棵树的宽度。对于ゆう树,まいじょう边都ゆういち个特ことてき方向ほうこう指向しこう节点てき方向ほうこうあるもの说上いち层的方向ほうこうあるもの相反あいはんてき指向しこうかのう节点てき方向ほうこうしたいち层的方向ほうこう)。一条边的两个端点中,もたれきんてき个节てんさけべ做另いち个节てんてきちち节点(也叫ちちそうそう亲节てん),相反あいはんてき,距离较远てき个节てんさけべ做另いち个节てんてき节点(也可以叫孩子儿子子女しじょひとし)。ちち方向ほうこうてき所有しょゆう节点さけべ做这个节てんてき祖先そせん,儿子方向ほうこうてき所有しょゆう节点さけべ做这个节てんてきぼつ有子ゆうこ节点てき节点さけべかのう节点あるものかのう节点)。よし于到てきみちただゆういちじょう节点以外いがいてき节点てきちち节点なが远只ゆういち个,祖先そせん就是这个てんいたてきみちじょうてき所有しょゆう节点(包括ほうかつ包括ほうかつ这个节点本身ほんみ)。另外,以一个节点为根的树是指包括这个节点和其所有子孙,并以这个节点为根てき树。よし于一般不需要这以外的子树,ごと一个节点也可以对应到一个以其为根的树,一个节点的子树通常也是指以这个节点的子节点为根的树。

如果一颗有根树每个节点的子树最多有n个,どう时每个节点在てんざい其父节点なかゆう固定こていてき可能かのう以留そらてき位置いち,这棵树叫做nまた。其中ごと个节てん以有两个固定こてい位置いちてき树的ゆう树叫做また,二叉树中每个节点的两个子树分别叫做ひだり右子ゆうこゆかり位置いち固定こていぼつゆうひだり树的时候也是以有右子ゆうこ树的。而“また树”通常つうじょう并不ゆびn为任意にんい值的nまた树,ただざいnまた树作较的时候表示ひょうじ普通ふつうてきゆう树。

对于ずいつくえてき树,高度こうどてき平均へいきん复杂O(logn),ただしぼつ有限ゆうげんせい而且不随ふずいつくえてき树高也可以达到O(n),也就じょりょうかのう节点ただゆういち个子树,あるもの常数じょうすう个分ささえてきじょう况。所以ゆえん树作为数すえ结构通常つうじょう需要じゅよう另外进行平衡へいこう

そん[编辑]

对于普通ふつうてき树,以像一样为每一个点存储一个边表(通常つうじょう按顺じょそんごと一个點的关系的叫做邻接のりそん具体ぐたいてき边的さけべ邻接ひょう),あるもの直接ちょくせつそん所有しょゆう边的边表ひとしよし于树まれ疏图,所以ゆえん一般不用邻接矩阵存储。对于ゆう树,如果よう为每一个点储存一个边表的方法,よし于每一棵树都只有一个父节点,所以ゆえん通常つうじょう指向しこうちち节点てき边不存在そんざい这个ひょうちゅうどう时如はて节点ぼつゆう顺序てき,也是いん为一个节点的子节点不会同时是其他节点的子节点,也可以把节点直接ちょくせつとうなりそん边的链表てき节点,这时こうごと个节てんただ需要じゅよう储存两个ゆび针,所以ゆえん这种そん储方ほうゆう时候也会さけべ做多また树转また树。

对于节点ゆう顺序てきゆう树,まいじょう边都以以固定こていてき位置いちぶん别储そん。对于完全かんぜんまた甚至のう直接ちょくせつよう一个数组访问所有节点,另外储存边的しんいきゆうてき树可以被设计なり固定こていてき从根节点开始访问,这时こう以不储存ちち节点。どう样的,ゆうてき树也省略しょうりゃく节点,れい并查しゅう

树的へん[编辑]

对于一般いっぱんてき树,以用普通ふつうてき图一样的方法ほうほうあまね深度しんど优先搜索そうさく宽度优先搜索そうさく。如果树的ごと个节てんしょう邻的てんゆう固定こていてき顺序,深度しんど优先搜索そうさく以不储存とうまえてん以外いがいてきにんなんしんいき,而且不用ふようばんじゅう。而在ゆう树中さら方便ほうべん所以ゆえんゆう树中很少使用しよう宽度优先搜索そうさく

对于ゆう树的从根开始てき深度しんど优先搜索そうさくあまね历,ゆうさん特定とくていてき顺序:

ぜんじょへん
さき访问节点,しかきさきさい访问所有しょゆうてき树;
きさきじょへん
さき访问树,しかきさきさい访问节点;
ちゅうじょへん
また树专ようさき访问ひだり树,しかきさき节点,さいきさき右子ゆうこ树。

注意ちゅうい对于ごといち种遍历,こと实上とくさき访问节点,这里てきへん历顺じょゆび处理节点ちゅうてきすうすえてき顺序。やめちゅうじょへん历和にん一其他遍历的情况下,以还ばらいちまた树。いち个直观的方法ほうほう按前じょあるものはん转的きさきじょ插入そうにゅう一个按中序排序的搜索树。やめぜんじょちゅうじょ也可以还ばらいち棵树,ただし不能ふのう知道ともみち二叉树中一个节点唯一的子树是在左边还是右边。

こと实上也可以把左右さゆうてき顺序はん过来。这些よし开始てきへん历方ほう也适よう特定とくていてきいち个子树。

森林しんりん[编辑]

森林しんりん树少いち条件じょうけんゆびぼつゆう回路かいろてき图。也就说,森林しんりん可能かのう连通てき,边数可能かのう树还しょう,就是说小于顶点数てんすう

森林しんりん也可以看なりこう棵互あい连的そらてき树,ただゆう一棵树也可以算是森林。过森りん一定いっていいち棵树。

森林しんりん也可以是ゆうてき,这时こう森林しんりんちゅうてきごと一棵树都有一个根。

一棵树去掉若干条边也会成为森林,这时こう以看なり一棵树分成了好多棵树。森林しんりんちゅうてき两棵树之间加いちじょう边,也可以把这两棵树あいざい一起かずきさい合成ごうせいいち棵树。

很多地方ちほうよう森林しんりんみやこただしようらい表示ひょうじ很多棵树,包括ほうかつさく逻辑结构かずすえ结构てき时候とうゆう一种重要的数据结构并查しゅう就是いち个有てき森林しんりん以很かいてき判断はんだん两个元素げんそぞく于同いち个互しょう独立どくりつてき集合しゅうごう,以及あい并两个集合しゅうごうとう

逻辑结构[编辑]

树也通常つうじょうかいようらい表示ひょうじ逻辑结构,れい搜索そうさく表示ひょうじ逻辑结构てき树一般是有根树。这种结构类似于有つぶせ扑序てきまい个节てん其之まえてき节点てききさき继、ぶんささえ节点とう。树的结构ちゅうまい个节てんまえてき节点唯一ゆいいつてき(就是说有唯一ゆいいつてきぜん驱、うえ层容ちち节点とう),另外ごと一个节点及其后面的部分也都是一棵树。

さく为数すえ结构[编辑]

树也一类重要的数据结构,どう时也ゆう逻辑结构てきせい质,通常つうじょう也是ゆう树。主要しゅようゆう搜索そうさくうずたか两种,前者ぜんしゃてき内容ないよう按中じょへん历的顺序はいじょてききさきしゃごと个节てんてき关键它的节点だいあるものしょう)。复杂一般いっぱんざい树的高度こうど,也就O(nlogn)以内いない

搜索そうさく以快そくてき查找ゆうじょてき内容ないようあるものしん内容ないようざいやめゆう内容ないようちゅうてき位置いち,也可以进ぎょう一些和按这个顺序的范围有关的统计。

うずたか (かずすえ结构)いち优先队列搜索そうさく树功のうしょう通常つうじょうただのう很方便びんてきもとめうずたかなか关键最小さいしょう最大さいだいてきすうすえ不能ふのう查找。(当然とうぜんゆうてき时候もとめ小和おわだい三小也是很方便的)

很多这类すうすえ结构かい给每个点あるもの边加じょういち些别てきさんすうゆう些数すえ结构还会やぶ本来ほんらいてき树的结构,ただし基本きほん还是ようてき树的しき,一般还是叫做“树”。

树的类型[编辑]