華為OD機試 - 生成哈夫曼樹(Java JS Python C)

題目描述

給定長度為 n 的無序的數字數組,每個數字代表二叉樹的葉子節點的權值,數字數組的值均大于等于1。

請完成一個函數,根據輸入的數字數組,生成哈夫曼樹,并將哈夫曼樹按照中序遍歷輸出。

為了保證輸出的二叉樹中序遍歷結果統一,增加以下限制:

二叉樹節點中,左節點權值小于右節點權值,根節點權值為左右節點權值之和。當左右節點權值相同時,左子樹高度小于等于右子樹高度。

注意:

所有用例保證有效,并能生成哈夫曼樹。

提醒:

哈夫曼樹又稱為最優二叉樹,是一種帶權路徑長度最短的二叉樹。

所謂樹的帶權路徑長度,就是樹中所有的葉節點的權值乘上其到根節點的路徑長度(若根節點為 0 層,葉節點到根節點的路徑長度為葉節點的層數)

輸入描述

例如:由葉子節點:5 15 40 30 10,生成的最優二叉樹如下圖所示,該樹的最短帶權路徑長度為:40 * 1 + 30 * 2 + 5 * 4 + 10 * 4 = 205。

<

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

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

相關文章

java中什么是線程池?

線程池&#xff08;Thread Pool&#xff09;是一種線程管理的機制&#xff0c;它主要解決了線程生命周期的開銷和資源消耗問題。線程池在程序中創建一些預先定義數量的線程&#xff0c;將任務分配給這些線程&#xff0c;從而提高了線程的重用性和性能。線程池的核心思想是將創建…

為 Compose MultiPlatform 添加 C/C++ 支持(3):實戰 Desktop、Android、iOS 調用同一個 C/C++ 代碼

theme: serene-rose 前言 在本系列的前兩篇文章中我們已經學會了如何在 kotlin native 平臺&#xff08;iOS&#xff09;使用 cinterop 調用 C/C 代碼。以及在 jvm 平臺&#xff08;Android、Desktop&#xff09;使用 jni 調用 C/C 代碼&#xff0c;并且知道了如何自動編譯 A…

Git 五分鐘教程速度入門

Git 五分鐘教程速度入門 分類 編程技術 許多人認為 Git 太混亂&#xff0c;或認為它是一種復雜的版本控制系統&#xff0c;其實不然&#xff0c;這篇文章有助于大家快速上手使用 Git。 入門 使用Git前&#xff0c;需要先建立一個倉庫(repository)。您可以使用一個已經存在的…

Win10操作系統安裝Python

1 Python解釋器下載 1.1 安裝環境 Windows 10 專業工作站版22H2 python-3.9.6-amd64.exe 1.2 下載地址 Python官網&#xff1a;Welcome to Python.org Python鏡像&#xff1a;CNPM Binaries Mirror 2 Python解釋器安裝 2.1 Install Python 3.9.6 (64-bit)界面 雙擊運行下…

鴻蒙開發組件之list

1、鴻蒙中的list作為可滑動列表功能&#xff0c;初始化方式是 List({space: 10}){ForEach(arr, item > {ListItem() {//列表單個Item組件}})} 其中&#xff0c;List中的space可以設置兩個ListItem組件的間距 List中是一個ForEach&#xff0c;需要注意的是item要返回的是L…

【數據結構】面試OJ題———棧|隊列|互相實現|循環隊列|括號匹配

目錄 1. 有效的括號 思路&#xff1a; 2.用隊列實現棧 思路&#xff1a; 3.用棧實現隊列 思路&#xff1a; 4.設計循環隊列 思路&#xff1a; 1. 有效的括號 20. 有效的括號 - 力扣&#xff08;LeetCode&#xff09; 給定一個只包括 (&#xff0c;)&#xff0c;{&…

Hive SQL間隔連續問題

問題引入 下面是某游戲公司記錄的用戶每日登錄數據, 計算每個用戶最大的連續登錄天數&#xff0c;定義連續登錄時可以間隔一天。舉例&#xff1a;如果一個用戶在 1,3,5,6,9 登錄了游戲&#xff0c;則視為連續 6 天登錄。 id dt1001 2021-12-121002 2021-12-12…

visual studio code 好用的插件

vscode-icons Better comments 該插件對不同類型的注釋會附加了不同的顏色&#xff0c;更加方便區分&#xff0c;幫助我們在代碼中創建更人性化的注釋。 Error Lens Error Lens插件是一款可以檢測你編寫的代碼的語法錯誤&#xff0c;并且會顯示出對語法錯誤的診斷信息…

USB的高速速率是如何確定的?

從全局說起。先說host對dev的插入檢測。由于dev插入到host&#xff0c;導致為0的D和D-線突然有了電平變化&#xff0c;有且只有一根線的電平會變。在高速和全速模式下&#xff0c;D線會被拉高&#xff1b;在低速模式下D-線會被拉高。同時&#xff0c;host會對插入的dev進行消抖…

RCNN 學習

RCNN算法流程 RCNN算法流程可分為4個步驟 一張圖像生成1K~2K個候選區域&#xff08;使用Selective Search方法&#xff09;對每個候選區域&#xff0c;使用深度網絡圖特征特征送入每一類的SVM分類器&#xff0c;判別是否屬于該類使用回歸期器細修正候選框位置 1.候選區域的生…

【星海隨筆】Prometheus(一)

注&#xff1a;Pagerduty作為報警系統&#xff0c;出鏡率很高。 雖然收費&#xff0c;但對于企業來說很便宜。 一個月幾十美金 不太支持中文&#xff0c;主要是語音方面。 Prometheus 查詢語句 &#xff0c; 基于數學運算模式的監控查詢 我們計算一下一天多少秒 1 * 24 * 60 *…

ChatGPT是科學還是藝術?

OpenAI最近談到GPT4變懶的問題&#xff0c;說“它更像是多人共同參與的藝術創作”&#xff0c;那到底大模型是科學還是藝術&#xff1f;

公式識別任務各個鏈條全部打通

目錄 引言公式識別任務是什么&#xff1f;公式識別任務解決方案初探使用建議寫在最后 引言 隨著LaTeX-OCR模型轉換問題的解決&#xff0c;公式識別任務中各個鏈條已經全部打通。小伙伴們可以放開膀子干了。 解決業界問題的方案&#xff0c;并不是單獨訓練一個模型就完事了&am…

如何確認網站是否有漏洞,如何找出網站存在的漏洞,找到漏洞該如何處理

如何確認網站或者服務器是否有漏洞 判斷一個網站是否是存在漏洞的方法&#xff1a; 1.可以借助德迅云安全漏洞掃描功能來檢查漏洞。 2.打開德迅云安全首頁&#xff0c;點擊最上面導航欄中的“安全產品”。 3.滑到“漏洞掃描”&#xff0c;選擇“產品價格”服務。 4.選擇您需…

【力扣】141和142環形鏈表

141.環形鏈表 法一&#xff1a;快慢指針 思路&#xff1a; 用兩個指針slow,fast,后者能比前者多走一步路&#xff0c;那判斷是不是有環&#xff0c;只需要判斷是否會相遇。 就是有一個能比烏龜跑2倍快的兔子&#xff0c;兩小只都在有環的路上跑&#xff0c;那是不是肯定會相…

golang開發之個微機器人的二次開發

簡要描述&#xff1a; 下載消息中的文件 請求URL&#xff1a; http://域名地址/getMsgFile 請求方式&#xff1a; POST 請求頭Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 參數&#xff1a; 參數名必選類型…

java基礎之TreeMap詳解

TreeMap詳解 TreeMap是Map接口的一個實現類&#xff0c;底層基于紅黑樹的實現&#xff0c;按照key的順序存儲 TreeMap 從繼承結構可以看到TreeMap除了繼承了AbstractMap類&#xff0c;還實現了NavigableMap接口&#xff0c;而NavigableMap接口是繼承自SortedMap接口的&#xff…

使用Vue3+Typescript手寫一個日歷簽到組件

設計理念 昨天寫了個簡單美觀的日歷簽到組件&#xff0c;使用的是Vue3TypeScript&#xff0c;大概邏輯是先找到本月份第一天是周幾&#xff0c;然后開始填充月份日期&#xff1a;weeksArray:[[]]:之后渲染到表格中&#xff0c;對于簽到事件觸發則先判斷是否是今天且還未沒有簽…

【PyTorch】模型訓練過程優化分析

文章目錄 1. 模型訓練過程劃分1.1. 定義過程1.1.1. 全局參數設置1.1.2. 模型定義 1.2. 數據集加載過程1.2.1. Dataset類&#xff1a;創建數據集1.2.2. Dataloader類&#xff1a;加載數據集 1.3. 訓練循環 2. 模型訓練過程優化的總體思路2.1. 提升數據從硬盤轉移到CPU內存的效率…

SPRD Android 13 需要在設置--顯示--鎖定屏幕--雙行時鐘--<關閉>

開始去改默認值沒生效 --- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml +++ b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml @@ -336,4 +336,6 @@<integer name="def_navigation_bar_config">0</integer…