代碼隨想錄算法訓練營第二十三天補|669. 修剪二叉搜索樹 ● 108.將有序數組轉換為二叉搜索樹 ● 538.把二叉搜索樹轉換為累加樹

平衡樹、二叉樹、靈活應用中序遍歷(值大小有序)

669. 修剪二叉搜索樹

給你二叉搜索樹的根節點 root ,同時給定最小邊界low 和最大邊界 high。通過修剪二叉搜索樹,使得所有節點的值在[low, high]中。修剪樹 不應該 改變保留在樹中的元素的相對結構 (即,如果沒有被移除,原有的父代子代關系都應當保留)。

發現規律:
二叉搜索樹特性:左子樹均小于根節點,右子樹均大于根節點,所以若值不在區間則只需要保留其中一條子樹;否則正常遍歷處理

class Solution {
public:
//二叉搜索樹特性:左子樹均小于根節點,右子樹均大于根節點,所以若值不在區間則只需要保留其中一條子樹TreeNode* trimBST(TreeNode* root, int low, int high) {if(root == nullptr) return nullptr;if(root->val > high) {return trimBST(root->left, low, high);}else if(root->val < low) {return trimBST(root->right, low, high);}root->left = trimBST(root->left, low, high);root->right = trimBST(root->right, low, high);return root;}
};

108.將有序數組轉換為二叉搜索樹

給你一個整數數組 nums ,其中元素已經按 升序 排列,請你將其轉換為一棵 高度平衡 二叉搜索樹。
高度平衡 二叉樹是一棵滿足「每個節點的左右兩個子樹的高度差的絕對值不超過 1 」的二叉樹。

思路: 為使平衡,則取升序序列中間值為分割點(根節點),以分割點為界,左序列為左子樹,右序列為右子樹

class Solution {
public:
//平衡二叉搜索樹,即二叉搜索樹中每個節點的左右子樹高度差絕對值相差不會超過1
//為使平衡,則取升序序列中間值為分割點(根節點)TreeNode* ArrayToBst(vector<int>& nums, int left, int right){if(left > right) return nullptr;TreeNode* root = new TreeNode();int mid = left + (right - left)/2;root->val = nums[mid];root->left = ArrayToBst(nums, left, mid-1);root->right = ArrayToBst(nums, mid+1, right);return root;}TreeNode* sortedArrayToBST(vector<int>& nums) {if(nums.empty()) return nullptr;return ArrayToBst(nums, 0, nums.size()-1);}
};

538.把二叉搜索樹轉換為累加樹

思路:
從示例1可以看出 累加樹逆中序(與正常中序不同,先訪問右節點,后訪問左節點)的節點值為降序累加序列
示例1

class Solution {
public:
//從示例1可以看出 累加樹逆中序(與正常中序不同,先訪問右節點,后訪問左節點)的節點值為降序累加序列TreeNode* ToSumTree(TreeNode* root, int &num){if(root == nullptr) return nullptr;root->right = ToSumTree(root->right, num);num += root->val; //中序遍歷保證訪問序列值有序root->val = num;root-> left = ToSumTree(root->left, num);return root;}TreeNode* convertBST(TreeNode* root) {int num = 0;return ToSumTree(root, num);}
};

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

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

相關文章

Window部署SkyWalking

SkyWalking mysql的驅動依賴 選擇下載版本 v9.4 現在后解壓縮目錄結構 一、修改config目錄文件 application.yml 修改1&#xff1a; selector: ${SW_STORAGE:h2} 修改后&#xff1a; selector: ${SW_STORAGE:mysql} 修改2&#xff1a;使用mysql數據庫 mysql: properti…

通俗易懂分析:Vite和Webpack的區別

1、對項目構建的理解 先從瀏覽器出發&#xff0c; 瀏覽器是由瀏覽器內核和JS引擎組成&#xff1b;瀏覽器內核編譯解析html代碼和css代碼&#xff0c;js引擎編譯解析JavaScript代碼&#xff1b;所以從本質上&#xff0c;瀏覽器只能識別運行JavaScript、CSS、HTML代碼。 而我們在…

敏捷開發最佳實踐:領導力維度實踐案例——走動式激勵

在本節實踐案例中&#xff0c;某財險公司信息技術部高級工程師分享了組織級數字化轉型中的優秀敏捷領導力實踐&#xff0c;不僅解決了產品上市周期長、響應市場變化慢的難題&#xff0c;還打破了部門墻、提升了客戶滿意度&#xff0c;該案例將為同類企業在組織層面進行有效敏捷…

Centos7配置靜態IP詳細步驟

使用Centos虛擬機測試時一到切換網段就頭疼&#xff0c;總是會有ping不通網關、同段IP和外網的情況。下面出一個盡可能完整的排查思路和配置靜態IP的過程。以下為配置nat模式后&#xff0c;出現以上情況的網絡不通的排查思路&#xff0c;并配置win10vm8靜態IP和centos7虛機nat模…

vue3路由切換過渡動畫實現

<router-view v-slot"{ Component }"><transition name"fade" mode"out-in" appear><keep-alive><component :is"Component" /></keep-alive></transition> </router-view>/* 路由切換動畫…

SQL字符集

目標:了解字符集的概念&#xff0c;掌握MySQL數據庫存儲數據的字符集邏輯以及設置方式 字符集概念 MySQL字符集關系 解決亂碼問題 字符集設置原理 1、字符集概念 目標:了解字符集概念&#xff0c;掌握字符集存儲和讀取的實現原理 概念 字符集:charset或者character set&am…

(十二)【Jmeter】線程(Threads(Users))之setUp 線程組

簡述 操作路徑如下: 作用:在正式測試開始前執行預加載或預熱操作,為測試做準備。配置:設置預加載或預熱操作的采樣器、循環次數等參數。使用場景:確保在正式測試開始前應用程序已經達到穩定狀態,減少測試結果的偏差。優點:提供預加載或預熱操作,確保測試的準確性。缺…

Centos開機網卡自啟動失敗

問題背景 每次都要手動啟動在這里插入代碼片 解決方案: 關閉 NetworkManager 服務 systemctl disable NetworkManager systemctl stop NetworkManager重啟就會發現網卡已經可以自動啟動了

2024幻獸帕魯游戲服務器租用價格表_一年和1個月報價明細

游戲服務器租用多少錢一年&#xff1f;1個月游戲服務器費用多少&#xff1f;阿里云4核16G10M游戲服務器26元1個月、149元半年&#xff0c;騰訊云4核16G游戲服務器32元、312元一年&#xff0c;華為云26元&#xff0c;京東云主機也是26元起&#xff0c;游戲服務器配置從4核16G、4…

代碼隨想錄算法刷題訓練營day22

代碼隨想錄算法刷題訓練營day22&#xff1a;LeetCode(236)二叉樹的最近公共祖先、LeetCode(235) 二叉搜索樹的最近公共祖先、LeetCode(701)二叉搜索樹中的插入操作、LeetCode(450)刪除二叉搜索樹中的節點 LeetCode(236)二叉樹的最近公共祖先 題目 代碼 /*** Definition for…

【鴻蒙 HarmonyOS 4.0】路由router

一、介紹 頁面路由指在應用程序中實現不同頁面之間的跳轉和數據傳遞。HarmonyOS提供了Router模塊&#xff0c;通過不同的url地址&#xff0c;可以方便地進行頁面路由&#xff0c;輕松地訪問不同的頁面。 二、頁面跳轉 2.1、兩種跳轉模式&#xff1a; router.pushUrl()&…

vue2與vue3中父子組件傳參的區別

本次主要針對vue中父子組件傳參所進行講解 一、vue2和vue3父傳子區別 1.vue2的父傳子 1).在父組件子標簽中自定義一個屬性 <sonPage :子組件接收到的類名"傳輸的數據">子組件</sonPage> 2).在子組件中peops屬性中拿到自定屬性 props: {子組件接收的…

Stable Diffusion算法、結構全流程概述

Stable Diffusion能力強、功能多、插件廣&#xff0c;本文擬概述SD的全流程&#xff0c;方便梳理算法各結構的關系 1、stable diffusion訓練用ddpm, 采樣用ddim DDPM的推理采樣步長和訓練時的步長一樣&#xff0c;導致采樣步數過多&#xff0c;推理時間長。DDIM指出&#xff…

安卓游戲開發之音頻技術優劣分析

一、引言 在安卓游戲開發中&#xff0c;音頻處理技術扮演著至關重要的角色&#xff0c;它不僅能夠增強游戲的沉浸感和玩家體驗&#xff0c;還能通過聲音效果傳達關鍵的游戲信息。以下將對幾種常見的安卓游戲音頻處理技術進行優劣分析&#xff0c;并結合應用場景來闡述其特點。 …

docker鏡像打包和解壓

背景 工作記錄 打包鏡像 docker save -o 壓縮包名稱.tar 鏡像名稱:鏡像版本 例如 docker save -o app-web.tar app-web:2.0解壓鏡像 這里解壓上面打包的app-web的壓縮包 docker load<壓縮包名稱.tar docker load<app-web.tar這樣解壓下來的實際就是app-web:2.0這個鏡…

微服務-微服務API網關Spring-clould-gateway實戰

1. 需求背景 在微服務架構中&#xff0c;通常一個系統會被拆分為多個微服務&#xff0c;面對這么多微服務客戶端應該如何去調用呢&#xff1f; 如果根據每個微服務的地址發起調用&#xff0c;存在如下問題&#xff1a; 1.客戶端多次請求不同的微服務&#xff0c;會增加客戶端…

Qt 事件

1. 事件 事件是對各種應用程序需要知道的由應用程序內部或者外部產生的事情或者動作的通稱。在Qt中使用一個對象來表示一個事件&#xff0c;它繼承自QEvent類。 2. 事件和信號 事件與信號并不相同&#xff0c;比如我們使用鼠標點擊了一下界面上的按鈕&#xff0c;那么就會產生…

node 之 初步認識

思考&#xff1a;為什么JavaScript可以在瀏覽器中被執行 代執行的js代碼——JavaScript解析引擎 不同的瀏覽器使用不同的JavaScript解析引擎 Chrome 瀏覽器 》 V8 Firefox瀏覽器 》OdinMonkey(奧丁猴&#xff09; Safri瀏覽器 》JSCore IE瀏覽器 》Chakra(查克拉&#xff09; e…

XML的寫法

下面我將以如下代碼來解釋下XML的寫法 <?xml version"1.0" encoding"UTF-8" ?> <Steam><steam id"1"><zhanghao>admin</zhanghao><mima>123</mima><num>120</num></steam><st…

金航標電子位于廣西柳州鹿寨縣天線生產基地于大年正月初九開工了

金航標電子位于廣西柳州鹿寨縣天線生產基地于大年正月初九開工了&#xff01;&#xff01;&#xff01;金航標kinghelm&#xff08;www.kinghelm.com.cn&#xff09;總部位于中國深圳市&#xff0c;兼顧技術、成本、管理、效率和可持續發展。東莞塘廈實驗室全電波暗室、網絡分析…