AcWing 1550:完全二叉搜索樹

【題目來源】
https://www.acwing.com/problem/content/1552/

【題目描述】

二叉搜索樹 (BST) 遞歸定義為具有以下屬性的二叉樹:
(1)若它的左子樹不空,則左子樹上所有結點的值均小于它的根結點的值
(2)若它的右子樹不空,則右子樹上所有結點的值均大于或等于它的根結點的值
(3)它的左、右子樹也分別為二叉搜索樹

完全二叉樹 (CBT) 定義為除最深層外的其他層的結點數都達到最大個數,最深層的所有結點都連續集中在最左邊的二叉樹。
現在,給定 N 個不同非負整數,表示 N 個結點的權值,用這 N 個結點可以構成唯一的
完全二叉搜索樹
請你輸出該
完全二叉搜索樹層序遍歷

【輸入格式】
第一行包含整數 N,表示結點個數。
第二行包含 N 個不同非負整數,表示每個結點的權值。

【輸出格式】
共一行,輸出給定完全二叉搜索樹的層序遍歷序列。

【數據范圍】
1≤N≤1000,
結點權值不超過 2000。

【輸入樣例】
10
1 2 3 4 5 6 7 8 9 0

【輸出樣例】
6 3 8 1 5 7 9 0 2 4

【算法分析】
● 二叉搜索樹(BST,Binary Search Tree)
二叉搜索樹的形態與給定的序列值及順序相關。也就是說,即便序列的值相同,但依據“
左小右大”的原則,不同的次序也會生成不同形態的二叉搜索樹。

? ? ? ? ? ? ?

(45,24,53,12,37,93)? ? ? ? ? ? ? ? ? ? (12,24,37,45,53,93)

● 完全二叉樹
如果在一棵具有n個結點的二叉樹中,它的邏輯結構與滿二叉樹的前n個結點的邏輯結構相同,則稱這樣的二叉樹為
完全二叉樹。顯然,在完全二叉樹中,結點 u 的左孩子為 2*u,右孩子為 2*u+1

●?二叉搜索樹具有一個重要的性質,即它的中序遍歷序列是遞增的。那又如何據此性質,輸出二叉搜索樹的層序遍歷序列呢?
對二叉搜索樹的結點值進行遞增排序,然后執行類似于中序遍歷的 dfs 操作,并在 dfs 過程中將對應的二叉搜索樹結點值存入一個中序數組中,之后輸出中序數組便可得到所求的二叉搜索樹的層序遍歷序列。

【算法代碼】

#include <bits/stdc++.h>
using namespace std;const int maxn=1010;
int a[maxn],in[maxn];
int n,idx;void dfs(int u) { //inorderif(u*2<=n) dfs(u*2);in[u]=a[idx++];if(u*2+1<=n) dfs(u*2+1);
}int main() {cin>>n;for(int i=0; i<n; i++) cin>>a[i];sort(a,a+n);dfs(1); //is 1,not 0. Otherwise,dfs can't run.for(int i=1; i<=n; i++) cout<<in[i]<<" ";return 0;
}/*
in:
10
1 2 3 4 5 6 7 8 9 0out:
6 3 8 1 5 7 9 0 2 4
*/




【參考文獻】
https://blog.csdn.net/justinzengTM/article/details/81459482
https://www.acwing.com/solution/content/11649/
https://www.acwing.com/solution/content/97469/





?

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

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

相關文章

大數據平臺之數據同步

數據同步也成為CDC (Chanage Data Capture) 。Change Data Capture (CDC) 是一種用于跟蹤和捕獲數據庫中數據變更的技術&#xff0c;它可以在數據發生變化時實時地將這些變更捕獲并傳遞到下游系統。以下是一些常用的開源 CDC 方案&#xff1a; 1. Flink CDC Flink CDC 是基于 …

快速上手LangChain:構建強大的語言模型應用

引言 在人工智能和自然語言處理&#xff08;NLP&#xff09;領域&#xff0c;構建高效且強大的語言模型應用變得越來越重要。LangChain 是一個專為開發者設計的框架&#xff0c;它簡化了語言模型應用的構建流程。本文將詳細介紹LangChain的功能和使用方法&#xff0c;幫助讀者…

76 4G模組 境外撥號入網注意

1 引言 最近朋友把國內的設備拿到新加坡了&#xff0c;然后發現原本國內可以使用的設備無法在異國他鄉聯網&#xff0c;所以就叫我來看看&#xff0c;發現是附網返回狀態、入網APN發生了改變導致的。另外&#xff0c;如果在境外使用國產4G模組撥號入網&#xff0c;也需要關注4G…

Windows安裝超好用的截圖工具——Snipaste

1、下載 官網&#xff1a;https://zh.snipaste.com/ 2、安裝 &#xff08;1&#xff09;解壓下載的壓縮包 &#xff08;2&#xff09;選中Snipaste.exe文件&#xff0c;右鍵發送到 -- > 桌面快捷方式 &#xff08;3&#xff09;雙擊桌面Snipaste圖標&#xff0c;桌面右下…

linux 服務器數據備份 和 mysql 數據遷移

查看域名ip 查看程序所處文件位置 list open files 1、 lsof -i :port 查看端口獲取進程 pid 2、lsof -i pid 1、scp 下載服務器文件到本地 security copy protocol 2、導出服務器 mysql 數據庫&#xff08;表&#xff09;到本地 mysqldump是MySQL自帶的一個實用程序&…

解析Java中1000個常用類:Date類,你學會了嗎?

在線工具站 推薦一個程序員在線工具站:程序員常用工具(http://cxytools.com),有時間戳、JSON格式化、文本對比、HASH生成、UUID生成等常用工具,效率加倍嘎嘎好用。程序員資料站 推薦一個程序員編程資料站:程序員的成長之路(http://cxyroad.com),收錄了一些列的技術教程…

Git 完整的提交規范教程

約定式提交規范 本文中的關鍵詞 “必須&#xff08;MUST&#xff09;”、“禁止&#xff08;MUST NOT&#xff09;”、“必要&#xff08;REQUIRED&#xff09;”、“應當&#xff08;SHALL&#xff09;”、“不應當&#xff08;SHALL NOT&#xff09;”、“應該&#xff08;S…

云計算【第一階段(24)】Linux文件系統與日志分析

一、文件與存儲系統的inode與block 1.1、硬盤存儲 最小存儲單位&#xff1a;扇區(sector) 每個扇區大小&#xff1a;512字節 1.2、文件存取 最小存取單位&#xff1a;塊(block)連續八個扇區組成&#xff1a;塊(block) 每個塊大小&#xff1a;4K文件數據&#xff1a;實際數據…

Leetcode1115 交替打印 FooBar及其測試

題目描述 相關標簽 相關企業 給你一個類&#xff1a; class FooBar { public void foo() { for (int i 0; i < n; i) { print(“foo”); } } public void bar() { for (int i 0; i < n; i) { print(“bar”); } } } 兩個不同的線程將會共用一個 FooBar 實例&#xf…

Java面試八股之如何提高MySQL的insert性能

如何提高MySQL的insert性能 提高MySQL的INSERT性能可以通過多種策略實現&#xff0c;以下是一些常見的優化技巧&#xff1a; 批量插入&#xff1a; 而不是逐條插入&#xff0c;可以使用單個INSERT語句插入多行數據。例如&#xff1a; INSERT INTO table_name (col1, col2) V…

正則表達式-使用筆記

正則表達式使用不當&#xff0c;會導致CPU飆升&#xff1b; 二、相關參考 正則表達式 – 語法 | 菜鳥教程 sparksql 正則匹配總結 三、回溯原理 導致性能下降最主要原因&#xff1a; .* 會導致大量回溯| 分支操作 https://zhuanlan.zhihu.com/p/27417442 四、常用工具 regex…

OpenSNN推文:科技前沿動態速覽:六七月份的技術革新與行業進展

隨著夏季的到來&#xff0c;科技界的熱度也如同氣溫一般持續攀升。在這個充滿活力的季節里&#xff0c;從量子計算的深邃世界到腦機接口的未來探索&#xff0c;從人工智能的智慧躍升到大數據的海洋遨游&#xff0c;再到運營策略的精妙布局和設計領域的創新火花&#xff0c;以及…

2024第三屆中國醫療機器人大會第一輪通知

2024第三屆中國醫療機器人大會第一輪通知 大會背景 醫療機器人技術正以前所未有的速度在主流醫學領域取得卓越進展&#xff0c;新應用、新技術不斷涌現&#xff0c;使得該領域在過去一年中取得了令人驚嘆的增長。然而&#xff0c;這僅僅是冰山一角&#xff0c;未來的發展空間仍…

Docker:一、安裝與卸載、配置阿里云加速器(Ubuntu)

目錄 &#x1f341;安裝docker&#x1f332;1、環境準備&#x1f332;2、安裝docker Engine&#x1f9ca;1、卸載舊版、任何沖突的包&#x1f9ca;2、使用存儲庫安裝&#x1f9ca;3、安裝 Docker 包。&#x1f9ca;4、查詢是否安裝成功&#x1f9ca;5、運行hello-world鏡像&…

柯橋小語種學校成人生活口語學習|西班牙語中H為什么不發音…

01 H en el alfabeto espaol 西語字母表中的h 字母H是唯一一個在標準西班牙語中不再代表任何音素的字母。盡管在它單獨出現時被叫做HACHE&#xff0c;但在大多數單詞拼寫中&#xff0c;它只是一個沒有聲音對應關系的字母&#xff0c;因此RAE稱其為“無聲的H”&#xff08;hac…

機器學習——無監督學習(k-means算法)

1、K-Means聚類算法 K表示超參數個數&#xff0c;如分成幾個類別&#xff0c;K值就取多少。若無需求&#xff0c;可使用網格搜索找到最佳的K。 步驟&#xff1a; 1、隨機設置K個特征空間內的點作為初始聚類中心&#xff1b; 2、對于其他每個點計算到K個中心的距離&#xff0c;…

蕎面打造的甜蜜魔法:甜甜圈

食家巷蕎面甜甜圈是一款具有特色的美食。它以蕎面為主要原料&#xff0c;相較于普通面粉&#xff0c;蕎面具有更高的營養價值&#xff0c;富含膳食纖維、維生素和礦物質。蕎面甜甜圈的口感可能會更加扎實和有嚼勁&#xff0c;同時帶著蕎面特有的谷物香氣。在制作過程中&#xf…

FlutterWeb渲染模式及提速

背景 在使用Flutter Web開發的網站過程中&#xff0c;常常會遇到不同瀏覽器之間的兼容性問題。例如&#xff0c;在Google瀏覽器中動畫和交互都非常流暢&#xff0c;但在360瀏覽器中卻會出現卡頓現象&#xff1b;在Google瀏覽器中動態設置圖標顏色正常顯示&#xff0c;而在Safa…

8-阿里云服務器 ECS配置R及Studio Server

目錄 查看服務器系統 關于linux系統 安裝R 1,查看官方教程 2,安裝R ①修改sources.list文件 ②安裝R:點擊Y ③更新最新版R ④安裝 RStudio(省略此步驟) ?編輯 ⑤安裝 RStudio Server 登錄rstudio-server 1,添加賬號(root賬號不能登錄) 2,開啟8787端口訪…

SpringBoot+OSS實現文件上傳

創建spring boot項目 pom依賴 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.17.4</version></dependency><dependency><groupId>javax.xml.bind</groupI…