代碼隨想錄 10.14 || 二叉樹 LeetCode 669.修剪二叉搜索樹、108.將有序數組轉換為二叉搜索樹、538.將二叉搜索樹轉為累加樹

669.修剪二叉搜索樹

? ? ? ? 根據給定的最小邊界?left?和最大邊界?right?修剪二叉搜索樹,保留值在?left ~?right?的節點,刪除不滿足此條件的節點。修剪樹不應該改變保留在樹中的元素的相對結構,即父子關系。

? ? ? ? 設?cur?為當前訪問的二叉樹節點,可分為以下情況:

????????1)cur->val?小于?left,當前節點應該被刪除,但是根據二叉搜索樹的性質,當前節點的右子樹可能滿足?cur->val?大于?left,即不能刪除以當前節點為根的整棵二叉樹,應該僅刪除當前節點,還需要遍歷其右子樹;

????????2)cur->?val?大于?right,當前節點應該被刪除,根據二叉搜索樹的性質,當前節點的左子樹可能滿足?cur->val?小于?right,還需要遍歷其左子樹;

? ? ? ? 3)cur->val?滿足給定區間,此時繼續向下遍歷即可。

class Solution {
public:TreeNode* trimBST(TreeNode *root, int low, int high) {if (root == nullptr) return nullptr;if (root->val < low) return trimBST(root->right, low, high);if (root->val > high) return trimBST(root->left, low, high);root->left = trimBST(root->left, low, high);root->right = trimBST(root->right, low, high);return root;}
};

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

? ? ? ? 二叉搜索樹要求:其右子樹的值大于根節點,左子樹的值小于根節點,左右子樹均滿足這個條件。因此,根節點是中間的值,所以從有序數組的中間一分為二,左邊初始化為左子樹,右邊初始化為右子樹。

class Solution {
private:TreeNode* traversal(vector<int> &nums, int left, int right) {if (left > right) return nullptr;int mid = left + ((right - left) / 2);TreeNode *node = new TreeNode(nums[mid]);node->left = traversal(nums, left, mid - 1);node->right = traversal(nums, mid + 1, right);return node;}public:TreeNode* sortedArrayToBST(vector<int>& nums) {TreeNode *root = traversal(nums, 0, nums.size() - 1);return root;

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

class Solution {
private:int pre = 0;void traversal(TreeNode *cur) {if (cur == nullptr) return;traversal(cur->right);cur->val += pre;pre = cur->val;traversal(cur->left);}public:TreeNode* convertBST(TreeNode *root) {pre = 0;traversal(root);return root;}
};

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

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

相關文章

LeetCode(32)串聯所有單詞的子串【滑動窗口】【困難】(含圖解)

目錄 1.題目2.答案3.提交結果截圖4.圖解 鏈接&#xff1a; 串聯所有單詞的子串 1.題目 給定一個字符串 s 和一個字符串數組 words。 words 中所有字符串 長度相同。 s 中的 串聯子串 是指一個包含 words 中所有字符串以任意順序排列連接起來的子串。 例如&#xff0c;如果 w…

Flutter的Event Loop

Flutter 的事件循環機制是其框架的核心部分&#xff0c;它負責管理事件的處理和UI的渲染。了解這個機制對于開發高效且響應迅速的Flutter應用非常重要。以下是Flutter事件循環的主要組成部分和工作原理&#xff1a; 1. 主事件循環&#xff08;Main Event Loop&#xff09; 當…

利用ros實現單片機通訊(轉載)

我覺得如果使用這個人的micro_ros通信協議&#xff0c;就不用再去Ubuntu或者Windows上面自己寫驅動程序了&#xff0c; 利用micro_ros實現esp32與ros2的通訊 Tianci ? 天津大學 工學博士 參考&#xff1a;https://github.com/micro-ROS/micro_ros_arduino https://blog.cs…

B站app作品列表sign

之前寫過一篇pc的:B站pc端w_rid逆向 最近pc端老是作妖,更新的太頻繁了, 于是決定干一下app, pc端有個w_rid加密,app端也有個類似的sign 人狠話不多,直接上成果吧: # -*- coding: UTF-8 -*- import hashlib import time import requests import json from urllib.parse…

C語言好好題(一維數組)

兩天沒有更新了&#xff0c;貼紙們&#xff0c;有沒有想我呀。&#x1f604;&#x1f604;&#x1f604; 好了&#xff0c;就寒暄到這里吧&#xff0c;下面請看題&#xff1a; 有序序列判斷 輸入一個整數序列&#xff0c;判斷是否是有序序列&#xff0c;有序&#xff0c;指序列…

騰訊云輕量4核8G12M帶寬服務器租用價格和S5實例報價

騰訊云4核8G服務器優惠價格表&#xff0c;云服務器CVM標準型S5實例4核8G配置價格15個月1437.3元&#xff0c;5年6490.44元&#xff0c;輕量應用服務器4核8G12M帶寬一年446元、529元15個月&#xff0c;阿騰云atengyun.com分享騰訊云4核8G服務器詳細配置、優惠價格及限制條件&…

C++(模板進階)

目錄 前言&#xff1a; 本章學習目標&#xff1a; 1.非類型模版參數 1.1使用方法 1.2注意事項 1.3 實際引用 2.模版特化 2.1概念 2.2函數模板特化 2.3類模板特化 2.3.1全特化 2.3.2偏特化 3.模版分離編譯 ?編輯 3.1失敗原因 ?編輯 3.2解決方案 4 總結 前言&…

【C++】類和對象——構造函數和析構函數

今天要學習兩個特殊的函數&#xff0c;分別是構造函數和析構函數&#xff0c;它們究竟有什么用呢&#xff1f; 比如說&#xff0c;我們先寫一個簡單的日期的類 class Date { public:void Init() {_year 1;_month 1;_day 1;}void Print() {cout << _year << &qu…

Sentinel 分布式系統

Sentinel 是一種分布式系統的流量防衛兵和熔斷器&#xff0c;由阿里巴巴開發并開源。它的主要目標是保護分布式系統中的穩定性和可用性&#xff0c;防止因高并發或異常流量而導致的系統崩潰。下面是 Sentinel 的原理和使用教程的概要&#xff1a; Sentinel 的原理&#xff1a;…

如何去開發一個springboot starter

如何去開發一個springboot starter 我們在平時用 Java 開發的時候&#xff0c;在 pom.xml 文件中引入一個依賴就可以很方便的使用了&#xff0c;但是你們知道這是如何實現的嗎。 現在我們就來解決這一個問題&#xff01; 創建 SpringBoot 項目 首先我們要做的就是把你想要給別…

css3

基礎 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>style</title><!-- link&#xff08;外部樣式&#xff09;和style&#xff08;內部樣式&#xff09;優先級相同&#xff0c;重復寫會覆蓋 --><link re…

面試題-9

1.如何封裝一個組件 1.使用Vue.extend()創建一個組件 2.使用Vue.components()方法注冊組件 3.如果子組件需要數據,可以在props中接收定義 4.子組件修改好數據,要把數據傳遞給父組件&#xff0c;可以用emit()方法 原則: 把功能拆開 盡量讓組件原子化,一個組件做一件事情 …

centos7安裝MySQL—以MySQL5.7.30為例

centos7安裝MySQL—以MySQL5.7.30為例 本文以MySQL5.7.30為例。 官網下載 進入MySQL官網&#xff1a;https://www.mysql.com/ 點擊DOWNLOADS 點擊鏈接&#xff1b; 點擊如上鏈接&#xff1a; 選擇對應版本&#xff1a; 點擊下載。 安裝 將下載后的安裝包上傳到/usr/local下…

CTF靶場搭建及Web賽題制作與終端docker環境部署

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 寫在前面 ╔═══════════════════════════════════════════════════…

使用ChatGPT創建Makefile構建系統:使用Make運行Docker

使用ChatGPT創建Makefile構建系統&#xff1a;使用Make運行Docker 芯語芯愿&#xff08;知乎/紛傳/CSDN/&#xff09;&#xff1b;小石頭的芯語芯愿&#xff08;微信公眾號&#xff09; 開發高效現代的構建系統對于滿足開發周期需求至關重要。原先&#xff0c;嵌入式開發者一…

Unity 場景烘培 ——LensFlare鏡頭光暈(三)

提示&#xff1a;文章有錯誤的地方&#xff0c;還望諸位大神指出&#xff01; 文章目錄 前言一、鏡頭光暈 (Lens Flares)是什么&#xff1f;二、使用Lens Flares組件總結 前言 一般情況下都會忽略的東西&#xff0c;鏡頭光暈。理論上不加鏡頭光暈&#xff0c;也不會有什么影響…

vue3的兩個提示[Vue warn]: 關于組件渲染和函數外部使用

1. [Vue warn]: inject() can only be used inside setup() or functional components. 這個消息是提示我們&#xff0c;需要將引入的方法作為一個變量使用。以vue-store為例&#xff0c;如果我們按照如下的方式使用&#xff1a; import UseUserStore from ../../store/module…

數據治理之考評環節

考評的流程&#xff08;批處理&#xff09; 周期調度&#xff0c;每天一次&#xff1a;采集hive, hdfs元數據存放到mysql中的dga庫的metainfo表手動通過管理頁面補充輔助信息指標考評 讀取要考評的表的元數據及輔助信息讀取要考評的指標對每張表的每個指標逐個進行考評保存考評…