數據結構算法習題通關:樹遍歷 / 哈夫曼 / 拓撲 / 哈希 / Dijkstra 全解析

  • 已知一棵二叉樹先序遍歷和中序遍歷分別為?ABDEGCFH?和?DBGEACHF,請畫出這個二叉樹的邏輯結構并寫出后序遍歷的序列。

先序遍歷:ABDEGCFH

中序遍歷:DBGEACHF

先序遍歷看出根為A,左子樹DBGE,右子樹CHF

A的左子樹

再看先序遍歷,可以看出左子樹的根為B,右子樹根為C

看中序遍歷 D為B的左子樹,右子樹要知道GE的關系看先序,E先輸出,所以B的右子樹為E,要看G為E的左子樹還是右子樹要看中序遍歷,G先輸出說明G為E的左子樹

A的右子樹

看先序遍歷,FH都在C的后面輸出,所以都在右子樹上,并且F先輸出所以H為右子樹的根,看H為F的左子樹還是右子樹,看中序遍歷H先輸出,所以H為F的左子樹。

  • 假定用于通信的某電文僅由8個字母構成,各字母在電文中出現的頻率分別為(12,5,3,7,14,21,9,15)。請完成:
  1. 構造哈夫曼樹;2)為這8個字母設計不等長的Huffman編碼,并計算WPL。

N個節點構造的構造哈夫曼樹,最后會有2N-1個節點

先排序 3 5 7 9 12 14 15 21

  • 使用序列 {57,40,38,11,13,34,48,75,6,19,9,7} 構造一個大頂堆,請給出構成完成的初始序列。

堆:完全二叉樹

存儲結構:數組存儲

0 ??1 ??2 ??3 ??4 ??5 ??6 ??7 ??8 ?9 ?10 11

57,40,38,11,13,34,48,75,6,19,9,7

  1. 找到最后一個分支節點,因為后面都是葉子結點,一定符合堆的規則(根大于左右子樹的根),這個節點在下標n/2的位置。
  2. 左孩子 :2n+1 右孩子 :2n+2

直接在數組中進行建堆:

7的下標為11,所以最后一個分支節點下標 5 ,就是34

根節點 左孩子 ??????????右孩子 交換情況

5 - 34 ??? 11 - 7 不交換

4 - 13 9 - 19 ?????? ??10 - 9 19與 13交換

0 ??????1? ? ? 2? ? ? 3? ? ?4? ? 5? ? ? ?6? ? ? 7? ? 8? ? 9? ? 10? 11

57,40,38,11,19,34,48,75,6,13,9,7

3 - 11 ? 7 - 75 ??8 - 6 75與11交換

0 ??????1? ? ? 2? ? ? 3? ? ?4? ? 5? ? ? ?6? ? ? 7? ? 8? ? 9? ? 10? 11

57,40,38,7519,34,48,11,6,13,9,7

2 - 38 5 - 34 ??6 - 48 ????????48與38交換

0 ??????1? ? ? 2? ? ? 3? ? ?4? ? 5? ? ? ?6? ? ? 7? ? 8? ? 9? ? 10? 11

57,40,487519,34,3811,6,13,9,7

1 - 40 3 - 75 ??4 - 19 ?75與40交換

0 ??????1? ? ? 2? ? ? 3? ? ?4? ? 5? ? ? ?6? ? ? 7? ? 8? ? 9? ? 10? 11

57,75484019,34,3811,6,13,9,7

0 - 57 1 - 75 ??2 - 48 ?75與57交換

0 ??????1? ? ? 2? ? ? 3? ? ?4? ? 5? ? ? ?6? ? ? 7? ? 8? ? 9? ? 10? 11

75,57,484019,34,3811,6,13,9,7

  • 設有向圖G中有向邊的集合E={<1,2>,<2,3>,<1,4>,<4,2>,<4,3>},請給出拓撲排序的序列。

  • 若一棵度為 4 的樹中度為 2、3、4 的結點個數分別為 3、2、2,請計算出該樹的葉子結點的個數。

度的和:2*3 + 3*2 + 4*2 = 20

樹的節點數:度的和 + 1 = 21 (度可以理解為指向他后繼的邊,所以根節點沒有前驅指向他,所以節點數為度+1)

葉子節點度為0 :21 - 3 - 2 - 2 = 14

  • 在結點數是?67 的完全二叉樹,按層次,從左到右編號,請計算最后一個非葉子結點的編號。

67 / 2 = 33就是求最后一個分支節點的下標 題3

  • 一個線性序列(36,13,40,63,22,6),假定采用散列函數Hash(key)=key%7來計算散列地址,將其散列存儲在A[0~9]中,采用線性探測再散列解決沖突。構造哈希表,并計算等概率情況下的查找成功和不成功的平均查找長度。

  • 在下面的網圖中使用Dijkstra算法,從頂點0出發,到各頂點的最短路徑,要求寫出計算過程。

?

v0到V1的最短路徑5 ,路徑節點:V0 -> V3 -> V1

v0到V2的最短路徑1 ,路徑節點:V0 -> V2

v0到V3的最短路徑2 ,路徑節點:V0 -> V3

v0到V4的最短路徑4 ,路徑節點:V0 -> V2 -> V4

?

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

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

相關文章

C++GO語言微服務和服務發現

目錄 01 03-go-micro簡介 02 04-服務發現的簡單認識 03 05-consul的安裝 04 06-consul常用的命令 05 07-注冊服務到consul并驗證 06 08-consul健康檢查 07 09-consul結合grpc使用-上&#xff08;只實現grpc遠程調用&#xff09; 08 10-consul結合grpc使用-中&#xff08…

HDFS 常用基礎命令詳解——快速上手分布式文件系統

簡介&#xff1a; 本文面向剛接觸 Hadoop HDFS&#xff08;Hadoop 分布式文件系統&#xff09;的讀者&#xff0c;結合 CSDN 博客風格&#xff0c;系統梳理最常用的 HDFS 客戶端命令&#xff0c;并配以示例和注意事項&#xff0c;幫助你在開發和運維中快速掌握 HDFS 的文件管理…

VUE CLI - 使用VUE腳手架創建前端項目工程

前言 前端從這里開始&#xff0c;本文將介紹如何使用VUE腳手架創建前端工程項目 1.預準備&#xff08;編輯器和管理器&#xff09; 編輯器&#xff1a;推薦使用Vscode&#xff0c;WebStorm&#xff0c;或者Hbuilder&#xff08;適合剛開始練手使用&#xff09;&#xff0c;個…

make和makefile的使用,以及寫一個簡單的進度條程序

1.自動化構建-make/makefile 1.1 背景 一個工程文件中的文件不計其數&#xff0c;其按類型、功能、模塊放在若干目錄中&#xff0c;makefile定義了一系列規則來指定哪些文件需要先編譯&#xff0c;哪些文件需要后編譯&#xff0c;哪些文件需要重新編譯&#xff0c;甚至于過呢…

數據結構中的棧與隊列:原理、實現與應用

前言&#xff1a;棧和隊列是計算機科學中兩種最基礎的線性數據結構&#xff0c;它們的獨特操作規則和廣泛的應用場景使其成為每一位開發者必須掌握的核心知識。本文將通過生活案例、代碼實現和實際應用場景&#xff0c;帶您深入理解這兩種數據結構的精髓。 1.棧&#xff08;Sta…

如何選擇自己喜歡的cms

選擇內容管理系統cms what is cms1.whatcms.org2.IsItWP.com4.Wappalyzer5.https://builtwith.com/6.https://w3techs.com/7. https://www.netcraft.com/8.onewebtool.com如何在不使用 CMS 檢測器的情況下手動檢測 CMS 結論 在開始構建自己的數字足跡之前&#xff0c;大多數人會…

SDC命令詳解:使用all_outputs命令進行查詢

相關閱讀 SDC命令詳解https://blog.csdn.net/weixin_45791458/category_12931432.html all_outputs命令用于創建一個輸出端口對象集合&#xff0c;關于設計對象和集合的更詳細介紹&#xff0c;可以參考下面的博客。 Synopsys&#xff1a;設計對象https://chenzhang.blog.csdn…

vue 中的ref

vue 中的ref vue 中的ref 1. ??ref?? ** 的基本作用** 在 Vue 中&#xff0c;ref 是用來獲取 DOM 元素或者組件實例的一種方式。對于 <el-form> 組件&#xff0c;通過 ref 可以獲取到該表單組件的實例&#xff0c;進而調用表單組件提供的各種方法和訪問其屬性。 …

數據庫版本控制工具--flyway

一. 什么是Flyway Flyway 是一款開源的數據庫遷移工具。它采用簡單直觀的方式管理數據庫變更&#xff0c;通過版本化的遷移腳本確保數據庫結構的一致性和可重復性。無論是開發環境、測試環境還是生產環境&#xff0c;Flyway 都能確保數據庫變更按照預期順序執行&#xff0c;避…

C++使用PoDoFo庫處理PDF文件

&#x1f4da; PoDoFo 簡介 PoDoFo 是一個用 C 編寫的自由開源庫&#xff0c;專用于 讀取、寫入和操作 PDF 文件。它適用于需要程序化處理 PDF 文件的應用程序&#xff0c;比如批量生成、修改、合并、提取元數據、繪圖等。 &#x1f31f; 核心特點 特性說明&#x1f4c4; P…

論文分享? arXiv2025 | TTRL: Test-Time Reinforcement Learning

TTRL: Test-Time Reinforcement Learning TTRL&#xff1a;測試時強化學習 https://github.com/PRIME-RL/TTRL &#x1f4d6;導讀&#xff1a;本篇博客有&#x1f9a5;精讀版、&#x1f407;速讀版及&#x1f914;思考三部分&#xff1b;精讀版是全文的翻譯&#xff0c;篇幅較…

dify插件接入fastmcp示例

文章目錄 1. 使用python完成mcp服務1.1 準備環境&#xff08;python安裝fastmcp&#xff09;1.2 mcp服務端示例代碼1.3 啟動mcp服務端 2. dify接入2.1 安裝MCP SSE和 Agent 策略&#xff08;支持 MCP 工具&#xff09; 插件2.2 dify agent插件配置mcp:2.3 mcp服務配置&#xff…

Linux 挖礦木馬排查命令清單

Linux 挖礦木馬排查命令清單 1. 系統資源使用情況檢查 # 查看CPU、內存使用情況 top -c# 檢查CPU占用最高的進程 ps aux --sort-%cpu# 查找可疑進程名 ps -ef | grep -i miner\|cpu\|GPU\|xmr# 檢查網絡連接情況 lsof -i2. 可疑進程和隱藏進程檢查 # 檢查僵尸進程 ps -ef | …

PyTorch 中如何針對 GPU 和 TPU 使用不同的處理方式

一個簡單的矩陣乘法例子來演示在 PyTorch 中如何針對 GPU 和 TPU 使用不同的處理方式。 這個例子會展示核心的區別在于如何獲取和指定計算設備&#xff0c;以及&#xff08;對于 TPU&#xff09;可能需要額外的庫和同步操作。 示例代碼&#xff1a; import torch import tim…

自主shell命令行解釋器

目標 能處理普通命令能處理內建命令 實現原理 用下面的時間軸來表示時間發生次序。時間從左向右。shell由標識為sh的方塊&#xff0c;它隨著時間從左向右移動。 shell從用戶讀入字符串“ls”。shell建立一個新的進程&#xff0c;然后等待進程中運行ls程序并等待進程結束。 …

如何在sheel中運行Spark

啟動hdfs集群&#xff0c;打開hadoop100:9870&#xff0c;在wcinput目錄下上傳一個包含很多個單詞的文本文件。 啟動之后在spark-shell中寫代碼。 // 讀取文件&#xff0c;得到RDD val rdd1 sc.textFile("hdfs://hadoop100:8020/wcinput/words.txt") // 將單詞進行切…

【入門】數字走向II

描述 輸入整數N&#xff0c;輸出相應方陣。 輸入描述 一個整數N。&#xff08; 0 < n < 10 ) 輸出描述 一個方陣&#xff0c;每個數字的場寬為3。 #include <bits/stdc.h> using namespace std; int main() {int n;cin>>n;for(int in;i>1;i--){for(…

Python自動化-python基礎(下)

六、帶參數的裝飾器 七、函數生成器 運行結果&#xff1a; 八、通過反射操作對象方法 1.添加和覆蓋對象方法 2.刪除對象方法 通過使用內建函數: delattr() # 刪除 x.a() print("通過反射刪除之后") delattr(x, "a") x.a()3 通過反射判斷對象是否有指定…

重新定義高性能:Hyperlane —— Rust生態中的極速HTTP服務器

重新定義高性能&#xff1a;Hyperlane —— Rust生態中的極速HTTP服務器 &#x1f680; 為什么選擇Hyperlane&#xff1f; 在追求極致性能的Web服務開發領域&#xff0c;Hyperlane 憑借其獨特的Rust基因和架構設計&#xff0c;在最新基準測試中展現出令人驚艷的表現&#xff…

通俗的理解MFC消息機制

1. 消息是什么&#xff1f; 想象你家的門鈴響了&#xff08;比如有人按門鈴、敲門、或者有快遞&#xff09;&#xff0c;這些都是“消息”。 在 MFC 中&#xff0c;消息就是系統或用戶觸發的各種事件&#xff0c;比如鼠標點擊&#xff08;WM_LBUTTONDOWN&#xff09;、鍵盤輸入…