數據結構歷年考研真題對應知識點(樹、森林)

目錄

5.4.2樹、森林與二叉樹的轉換

1.樹轉換為二叉樹

【樹和二叉樹的轉換及相關性質的推理(2009、2011)】

2.森林轉換為二叉樹

【森林和二叉樹的轉換及相關性質的推理(2014)】

3.二叉樹轉換為森林

【由遍歷序列構造一棵二叉樹并轉換為對應的森林(2020、2021)】

5.4.3樹和森林的遍歷

1.樹的遍歷

【樹與二叉樹遍歷方法的對應關系(2019)】

2.森林的遍歷

【森林與二叉樹遍歷方法的對應關系(2020)】


5.4.2樹、森林與二叉樹的轉換

1.樹轉換為二叉樹

樹和二叉樹的轉換及相關性質的推理(2009、2011)】

樹轉換為二叉樹的規則:每個結點的左指針指向它的第一個孩子,右指針指向它在樹中的相鄰右兄弟,這個規則又稱“左孩子右兄弟”。由于根結點沒有兄弟,因此樹轉換得到的二叉樹沒有右子樹,如圖 5.23 所示。

樹轉換為二叉樹的畫法:

1) 在兄弟結點之間加一連線;

2) 對每個結點,只保留它與第一個孩子的連線,而與其他孩子的連線全部抹掉:

3) 以樹根為軸心,順時針旋轉 45°。

2.森林轉換為二叉樹

森林和二叉樹的轉換及相關性質的推理(2014)】

將森林轉換為二叉樹的規則與樹類似。先將森林中的每棵樹轉換為二叉樹,由于任意一棵樹對應的二叉樹的右子樹必空,若把森林中第二棵樹根視為第一棵樹根的右兄弟,即將第二棵樹對應的二叉樹當作第一棵二叉樹根的右子樹,將第三棵樹對應的二叉樹當作第二棵二叉樹根的右子樹,以此類推,就可以將森林轉換為二叉樹。

森林轉換為二叉樹的畫法:

1) 將森林中的每棵樹轉換成相應的二叉樹;

2) 每棵樹的根也可視為兄弟關系,在每棵樹的根之間加一根連線:

3) 以第一棵樹的根為軸心順時針旋轉 45°。

3.二叉樹轉換為森林

由遍歷序列構造一棵二叉樹并轉換為對應的森林(2020、2021)】

二叉樹轉換為森林的規則:

若二叉樹非空,則二叉樹的根及其左子樹為第一棵樹的二叉樹形式,所以將根的右鏈斷開。

二叉樹根的右子樹又可視為一個由除第一棵樹外的森林轉換后的二叉樹,應用同樣的方法,直到最后只剩一棵沒有右子樹的二叉樹為止,最后將每棵二叉樹依次轉換成樹,就得到了原森林,如圖5.24所示。二叉樹轉換為樹或森林是唯一的。

5.4.3樹和森林的遍歷

1.樹的遍歷

樹與二叉樹遍歷方法的對應關系(2019)】

樹的遍歷是指用某種方式訪問樹中的每個結點,且僅訪問一次。主要有兩種方式:

1) 先根遍歷。若樹非空,則按如下規則遍歷:

  • 先訪問根結點。
  • 再依次遍歷根結點的每棵子樹,遍歷子樹時仍遵循先根后子樹的規則

其遍歷序列與這棵樹相應二叉樹的先序序列相同。

2) 后根遍歷。若樹非空,則按如下規則遍歷:

  • 先依次遍歷根結點的每棵子樹,遍歷子樹時仍遵循先子樹后根的規則。
  • 再訪問根結點。

其遍歷序列與這棵樹相應二叉樹的中序序列相同。

圖5.23 的樹的先根遍歷序列為ABEFCDG,后根遍歷序列為 EFBCGDA。

另外,樹也有層次遍歷,與二叉樹的層次遍歷思想基本相同,即按層序依次訪問各結點。

2.森林的遍歷

按照森林和樹相互遞歸的定義,可得到森林的兩種遍歷方法。

1) 先序遍歷森林。若森林為非空,則按如下規則遍歷:

  • 訪問森林中第一棵樹的根結點。
  • 先序遍歷第一棵樹中根結點的子樹森林。
  • 先序遍歷除去第一棵樹之后剩余的樹構成的森林。

2) 中序遍歷森林。森林為非空時,按如下規則遍歷:

  • 中序遍歷森林中第一棵樹的根結點的子樹森林。
  • 訪問第一棵樹的根結點。
  • 中序遍歷除去第一棵樹之后剩余的樹構成的森林。

圖5.24的森林的先序遍歷序列為ABCDEFGHI,中序遍歷序列為 BCDAFEHIG。

森林與二叉樹遍歷方法的對應關系(2020)】

當森林轉換成二叉樹時,其第一棵樹的子樹森林轉換成左子樹,剩余樹的森林轉換成右子樹,可知森林的先序和中序遍歷即為其對應二叉樹的先序和中序遍歷。
樹和森林的遍歷與二叉樹的遍歷關系見表。

森林二叉樹
先根遍歷

先序遍歷

先序遍歷
后根遍歷中序遍歷中序遍歷

注意:部分教材也將森林的中序遍歷稱為后序遍歷,稱中序遍歷是相對其二叉樹而言的,稱后序遍歷是因為根確實是最后才訪問的,若遇到這兩種稱謂,則可理解為同一種遍歷方法。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/46320.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/46320.shtml
英文地址,請注明出處:http://en.pswp.cn/web/46320.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C# 各版本語法新功能匯總

C# 8.0 以后 官網 C# 7.3 》》in C# 7.2 》》 命名參數、具名參數 》》》 條件 ref 表達式 C# 7.1 》》 default 運算符 default 在C#7.1中得到了改進,不再需要default(T)了 //變量賦值C#7.0 var s "字符串"; s default(s…

LeetCode 算法:電話號碼的字母組合 c++

原題鏈接🔗:電話號碼的字母組合 難度:中等???? 題目 給定一個僅包含數字 2-9 的字符串,返回所有它能表示的字母組合。答案可以按 任意順序 返回。 給出數字到字母的映射如下(與電話按鍵相同)。注意 …

SpringCloud教程 | 第九篇: 使用API Gateway

1、參考資料 SpringCloud基礎篇-10-服務網關-Gateway_springcloud gateway-CSDN博客 2、先學習路由,參考了5.1 2.1、建了一個cloudGatewayDemo,這是用來配置網關的工程,配置如下: http://localhost:18080/aaa/name 該接口代碼如…

git clone命令, 克隆遠程倉庫

這個應該是最簡單的命令,當別人扔給你一個*****.git鏈接,你要知道怎么用,但是還需要注意以下幾點: 1. 你在該網站上是否有賬號 2. 你在該網站上的賬號是否是該項目的成員,如果不是,那可能clone不了 3. 本機…

WSL-Ubuntu20.04部署環境配置

1.更換Ubuntu軟件倉庫鏡像源 為了在WSL上使用TensorRT進行推理加速,需要安裝以下環境,下面將按以下順序分別介紹安裝、驗證以及刪除環境: #1.C環境配置 gcc、gdb、g #2.gpu環境 cuda、cudnn #3.Cmake環境 CMake #4.OpenCV環境 OpenCV #5.Ten…

vxe-grid 實現配置式form搜索條件 form搜索條件框可折疊 配置式table

文章目錄 效果圖代碼 效果圖 代碼 <template><div class"app-container"><vxe-grid refxGrid v-bind"gridOptions" v-if"tableHeight" :height"tableHeight"><template #billDate"{ data }"><e…

Zoom視頻會議軟件使用

Zoom是一款廣受歡迎的視頻會議軟件&#xff0c;使用它可以輕松地進行遠程會議、在線培訓和團隊協作等。要充分利用Zoom軟件的功能&#xff0c;以下是詳細具體的使用方法和步驟&#xff1a; 下載安裝 下載&#xff1a;訪問Zoom官方網站&#xff0c;根據使用的操作系統下載相應的…

ttkefu在線客服系統 機器人+人工客服 全渠道接入客戶咨詢

ttkefu在線客服系統是一種集成了機器人客服與人工客服&#xff0c;并支持全渠道接入客戶咨詢的綜合解決方案。這種系統能夠顯著提升客戶服務效率&#xff0c;優化客戶體驗&#xff0c;同時幫助企業降低運營成本 1. 智能機器人客服 自動回復&#xff1a;機器人客服能夠自…

Java集合框架的內部揭秘:List、Set與Map的深潛之旅

Java集合框架是一套強大的工具&#xff0c;為開發者提供了靈活的數據管理方式。本文將深入剖析List、Set和Map的內部機制&#xff0c;通過詳細的示例和擴展討論&#xff0c;帶你領略這些數據容器的真諦。 一、List&#xff1a;有序序列的深度剖析 List接口是一個可以包含重復…

自制連點器

B站使用教程&#xff1a;https://www.bilibili.com/video/BV1SR85e4EKw/?vd_source47eba1800d831e86d4778a128740fe73 下載鏈接&#xff1a;鏈接&#xff1a;https://pan.baidu.com/s/1Spv_yVPFB3zoS__VL-nhaQ?pwdyxo1 提取碼&#xff1a;yxo1

20.x86游戲實戰-遠線程注入的實現

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 本次游戲沒法給 內容參考于&#xff1a;微塵網絡安全 工具下載&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

Spring Boot 中,監聽應用程序啟動的生命周期事件的4種方法

文章目錄 前言在 Spring Boot 中&#xff0c;監聽應用程序啟動的生命周期事件有多種方法。你可以使用以下幾種方式來實現&#xff1a; 一、使用 ApplicationListener二、使用 EventListener三、實現 CommandLineRunner 或 ApplicationRunner四、使用 SmartLifecycle總結 前言 …

Spring AI 應用開發中設置訪問 Ollama 的超時時間

使用 Spring AI 開發 AI 應用時&#xff0c;Ollama 通常在本地開發和測試時使用&#xff0c;用來在本地運行大模型。由于本地開發機器的資源限制&#xff0c;當使用 Ollama 運行較大的模型時&#xff0c;大模型給出響應的時間會比較長。Spring AI 提供的 OllamaChatModel 與 Ol…

在Mac上免費恢復誤刪除的Word文檔

Microsoft Word for Mac是一個有用的文字處理應用程序&#xff0c;它與Microsoft Office套件捆綁在一起。該軟件的穩定版本包括 Word 2019、2016、2011 等。 Word for Mac 與 Apple Pages 兼容;這允許在不同的操作系統版本中使用Word文檔&#xff0c;而不會遇到任何麻煩。 與…

【數據結構】非線性表----樹詳解

樹是一種非線性結構&#xff0c;它是由**n&#xff08;n>0&#xff09;**個有限結點組成一個具有層次關系的集合。具有層次關系則說明它的結構不再是線性表那樣一對一&#xff0c;而是一對多的關系&#xff1b;隨著層數的增加&#xff0c;每一層的元素個數也在不斷變化&…

逆向案例二十三——請求頭參數加密,某區塊鏈交易逆向

網址&#xff1a;aHR0cHM6Ly93d3cub2tsaW5rLmNvbS96aC1oYW5zL2J0Yy90eC1saXN0L3BhZ2UvNAo 抓包分析&#xff0c;發現請求頭有X-Apikey參數加密&#xff0c;其他表單和返回內容沒有加密。 直接搜索關鍵字&#xff0c;X-Apikey&#xff0c;找到疑似加密位置&#xff0c;注意這里…

零基礎學習Python(三)

1. 多重繼承 一個子類可以繼承多個父類&#xff0c;這與一些編程語言的規則不通。 如果多個父類中有同名的變量和方法&#xff0c;子類訪問的順序是按照繼承時小括號里書寫的順序進行訪問的。 可以用issubclass(B, A)方法判斷B是否為A的子類。 2. 綁定 類中的方法通過參數s…

《TF2.x強化學習手冊》P59-P65-SARSA-Q-learning

文章目錄 實現SARSA算法和對應的強化學習智能體前期準備實現步驟工作原理初始化算法流程 構建基于Q學習的智能體前期準備實現步驟工作原理SARSA 算法的收斂性&#xff1a;SARSA 適合在線學習和真實系統&#xff1a;Q 學習算法的適用性&#xff1a; 實現SARSA算法和對應的強化學…

HDC使用常見命令

HDC&#xff08;HarmonyOS Device Connector&#xff09;是為開發人員提供的用于調試的命令行工具&#xff0c;通過該工具可以在windows/linux/mac系統上與真實設備進行交互。 使用HDC前&#xff0c;需要配置相關環境變量&#xff1a; 在此電腦 > 屬性 > 高級系統設置 &g…

Git常用命令以及使用IDEA集成Gitee

目錄 一、設置用戶簽名 二、初始化本地庫 三、查看本地庫狀態 四、添加文件到暫存區 五、提交本地庫 六、修改文件 七、版本穿梭 八、Git分支 九、分支的操作 9.1、查看分支 9.2、創建分支 9.3、切換分支 9.4、合并分支 十、團隊協作 十一、Idea集成Git 11.1、配…