- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5.10 集合的表示法 定義[塌陷規則collapsing rule]:如果j是從i到其根節點的路徑上的一個節點,且parent[i] ? root[i],則令parent[j]為root[i]。 程式5.21:塌陷規則 int collapsingFind(int i) { int root, trail, lead; for (root = i; parent[root] = 0; root = parent[root]) ; for (trail = i; trail != root; trail = lead) { lead = parent[trail]; parent[trail] = root; } return root; } Hsin-Chang Yang@NUKIM * 5.11 二元樹之計數 5.11.1 不同的二元樹 令n為節點數。當n = 0或n = 1時,只有一個二元樹。當n = 2時,有兩個不同的二元樹。當n = 3時,有5個不同的二元樹。 當節點數為n時,有多少個不同的二元樹呢? 5.11.2 堆疊排列 假設某一樹之先序尋訪序列為A B C D E F G H I,其中序尋訪序列為B C A E D G H F I。這兩序列是否可義一唯一的樹?另一種說法,這兩個序列是否可以來自不同的樹? Hsin-Chang Yang@NUKIM * 5.11 二元樹之計數 根據先序序列的第一個字母A,我們知道它一定是此樹之根節點。再根據中序序列,我們可知A之前的節點(B C)為A之左子樹,其餘的節點(E D G H F I)為右子樹。如圖5.47(a)所示。 繼續看先序序列,我們得到B為下一根節點。由於在中序序列中之B之前已無節點,B之左子樹為空,因此C為其右子樹,如圖5.47(b)所示。 繼續使用上述方法,我們可以得到圖5.48(a)之結果。 每一二元樹有唯一之先序/中序序列配對。 Hsin-Chang Yang@NUKIM * 5.11 二元樹之計數 圖5.47:由先序與中序序列建立二元樹 Hsin-Chang Yang@NUKIM A B, C D, E, F, G, H, I A D, E, F, G, H, I B C ( a ) ( b ) * 5.11 二元樹之計數 圖5.48:依先序與中序序列建立之二元樹 Hsin-Chang Yang@NUKIM A B C D F E I G H (a) 1 2 3 4 6 5 9 7 8 (b) * 5.11 二元樹之計數 令一n節點之二元樹之節點由1至n號。由此二元樹所定義之中序排列(inorder permutation)定義為此樹在進行中序尋訪時所拜訪之節點之順序。先序排列之定義類似。 例如,令圖5.48(a)之二元樹之節點順序如圖5.48(b)所示。則其先序排列為1, 2, ..., 9。其中序排列為2, 3, 1, 5, 4, 7, 8, 6, 9。 如果一樹的節點編號後之先序排列為1, 2, ..., n,則不同的中序排列定義了不同的二元樹。因此,不同的二元樹數量等於不同的中序排列數。 將數字1至n藉由堆疊傳遞並依所有可能方式取出之方法數會等於具有n個節點之不同二元樹之數量。 Hsin-Chang Yang@NUKIM * 5.11 二元樹之計數 假設有數值1, 2, 3,則由堆疊所得之可能排列為(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 2, 1)。(3, 1, 2)不可能獲得。這五種排列各自對應至具有三節點之二元樹的其中一種。如圖5.49所示。 圖5.49:對應至五種排列的二元樹 Hsin-Chang Yang@NUKIM 1 2 3 1 2 3 1 3 2 1 2 3 1 2 3 (1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 2, 1) * * * * * * * * * * * * * * * * * * * * * * * * * * 5.6 堆積(Heaps) while (child = *n) { if ((child *n) (heap[child].key heap[child + 1].key)) child++;/*找出較大的孩子*/ if (temp.key = heap[child].key) break
您可能关注的文档
最近下载
- 照度计算计算书.doc VIP
- 人教版道德与法治三年级上册第4课《 科技力量大》第2课时 科技提升国力 教学课件.pptx VIP
- 超详细的化工装置开停车技术,太全了.pdf VIP
- (完整版)电工三级安全教育试卷附答案.docx VIP
- 部编六年级上册小学道德与法治期中检测试题(共3套).pdf VIP
- 代谢相关(非酒精性)脂肪性肝病防治指南(2024年版)解读(1)(4)PPT课件.pptx VIP
- 2023 年陕西省普通高校职业教育单独招生统一考试语文试题(解析版).pdf VIP
- 《华经》五时八教思想质疑.docx VIP
- 研究生的压力应对与健康心理答案.pdf VIP
- 江苏省苏州市昆山、太仓、常熟、张家港四市2023-2024学年九年级上学期期中阳光测评英语试题.docx VIP
文档评论(0)