【代碼隨想錄Day23】|669.修建二叉搜索樹、108.將有序數組轉換為二叉搜索樹、538.把二叉搜索樹轉換為累加樹

669. 修剪二叉搜索樹

這題最開始的想法是復用刪除節點的那題的思路做,需要修改的部分就是要讓程序刪除完一個點后繼續遍歷,因為后續可能還有不符合條件的節點。但這樣想也做復雜了。

這類題其實不用想用什么序遍歷,用哪種方式只是為了更好的達成目的,不要被必須用前中后常用的固定的順序束縛住了。

這題翻譯過來,要做的是找到小于low的節點,刪除該節點及其左子樹,將右子樹連到該節點的父節點;找到大于high的節點,刪除該節點以及它的右子樹,將其左子樹連接到該節點的父節點。

可以將情況分解成以下3類:

在low,high區間內的繼續找左右子樹;

碰到小于low的,繼續在其右子樹上找是否還有不在區間的,最后回溯返回這顆右子樹;

碰到大于high的,繼續在其左子樹上找是否還有不在區間的,最后回溯返回這顆左子樹。

這用什么順序都行,只要能遍歷二叉樹。

class Solution {
public:TreeNode* trimBST(TreeNode* root, int low, int high) {if (root == nullptr ) return nullptr;if (root->val < low) {TreeNode* right = trimBST(root->right, low, high); // 尋找符合區間[low, high]的節點return right;}if (root->val > high) {TreeNode* left = trimBST(root->left, low, high); // 尋找符合區間[low, high]的節點return left;}root->left = trimBST(root->left, low, high); // root->left接入符合條件的左孩子root->right = trimBST(root->right, low, high); // root->right接入符合條件的右孩子return root;}
};

?這題在力扣平臺上跑有點小問題,如果刪除節點的話會報錯,但在本地的ide上運行是不會有問題的,這應該是平臺的問題。以下是找到的解釋的博客。力扣平臺delete的問題:delete出現內存報錯ERROR: AddressSanitizer: heap-use-after-free on address-CSDN博客

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

這題的收獲是再次提醒我了做題時要統一區間的定義。

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

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

這題的收獲是,不要被學過的知識束縛。一開始想到了,這題轉成數組,從后往前累加即可,但對應到樹上,發現使用學過的前中后怎么都不適合來遍歷。看完題解,才發現還能 右中左 這樣遍歷,被學過的知識鎖住了,其實這很簡單就能想到,左中右 中序遍歷,能從小到大輸出,那么 右中左 則是能從大到小輸出。前提是這是二叉搜索樹。

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

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

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

相關文章

案例|開發一個美業小程序,都有什么功能

隨著移動互聯網的迅猛發展&#xff0c;美業連鎖機構紛紛尋求數字化轉型&#xff0c;以小程序為載體&#xff0c;提升服務效率&#xff0c;增強客戶體驗。 線下店現在面臨的困境&#xff1a; 客戶到店排隊時間過長&#xff0c;體驗感受差 新客引流難&#xff0c;老用戶回頭客…

基于EV54Y39A PIC-IOT WA的手指數量檢測功能開發(MPLAB+ADC)

目錄 項目介紹硬件介紹項目設計開發環境及工程參考總體流程圖硬件基本配置光照傳感器讀取定時器檢測邏輯 功能展示項目總結 &#x1f449; 【Funpack3-2】基于EV54Y39A PIC-IOT WA的手指數量檢測功能開發 &#x1f449; Github: EmbeddedCamerata/PIC-IOT_finger_recognition 項…

Flutter基礎 -- Dart 語言 -- 注釋函數表達式

目錄 1. 注釋 1.1 單行注釋 1.2 多行注釋 1.3 文檔注釋 2. 函數 2.1 定義 2.2 可選參數 2.3 可選參數 默認值 2.4 命名參數 默認值 2.5 函數內定義 2.6 Funcation 返回函數對象 2.7 匿名函數 2.8 作用域 3. 操作符 3.1 操作符表 3.2 算術操作符 3.3 相等相關的…

上海亞商投顧:滬指沖高回落 兩市成交金額僅剩7000億

上海亞商投顧前言&#xff1a;無懼大盤漲跌&#xff0c;解密龍虎榜資金&#xff0c;跟蹤一線游資和機構資金動向&#xff0c;識別短期熱點和強勢個股。 一.市場情緒 三大指數昨日沖高回落&#xff0c;午后一度集體翻綠&#xff0c;臨近尾盤小幅回升。光伏產業鏈再度走強&#…

aws 在ecs外部實例上運行gpu負載

參考資料 https://docs.amazonaws.cn/zh_cn/AmazonECS/latest/developerguide/ecs-gpu.htmlhttps://docs.amazonaws.cn/AWSEC2/latest/UserGuide/accelerated-computing-instances.html#gpu-instanceshttps://docs.amazonaws.cn/AWSEC2/latest/UserGuide/install-nvidia-drive…

LeetCode 63.不同路徑Ⅱ

思路&#xff1a; 在有障礙物的地方增加一個判斷即可 class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int dp[105][105];int mobstacleGrid.size();int nobstacleGrid[0].size();for(int i0;i<m;i){for(int j0…

K8s集群之 存儲卷 PV PVC

目錄 默寫 1 如何將pod創建在指定的Node節點上 2 污點的種類(在node上設置) 一 掛載存儲??????? 1 emptyDir存儲卷 2 hostPath存儲卷 ①在 node01 節點上創建掛載目錄 ② 在 node02 節點上創建掛載目錄 ③ 創建 Pod 資源 ④ 在master上檢測一下&#xff1a;…

C++ vector 模擬實現

vector的底層也是一個動態數組&#xff0c;他與 string 的區別就是&#xff0c;string 是專門用來存儲字符類數據的&#xff0c;為了兼容C語言&#xff0c;使用C語言的接口&#xff0c;在string的動態數組內都會都開一塊空間用來存 \0 &#xff0c;而vector則不會。 首先我們要…

【Linux多線程】認識多線程創建線程

文章目錄 什么是多線程為什么稱linux下的線程是輕量級進程呢&#xff1f; 線程的優點線程的缺點線程異常線程和進程創建線程1.pthread_create2.pthread_self 什么是多線程 進程是正在運行的程序的實例&#xff0c;而線程&#xff08;thread&#xff09;是進程中的一個執行路線…

python 刪除pdf 空白頁

環境 python 3.10 PyPDF2 3.0.1 安裝 pip install PyPDF2流程 將空白頁和內容頁讀取出來&#xff0c;看看內部結構有什么不同以此為依據&#xff0c;遍歷整個PDF 文件&#xff0c;標記處有內容的頁面&#xff0c;寫入到另外一個PDF文件。 python 代碼 # 每一個頁都是一個…

Springboot郵件發送配置

Springboot郵件發送配置 pom.xml依賴&#xff1a; <dependency><groupId>org.eclipse.angus</groupId><artifactId>jakarta.mail</artifactId><version>2.0.3</version> </dependency> <dependency><groupId>or…

跨域的解決方案

1. 計算機更改跨域 1.C盤->Windows->System32->drivers->etc 2.修改hosts 文件2. Chrome瀏覽器的跨域設置 操作步驟&#xff1a;1.打開我的電腦——C盤 新建一個文件夾&#xff0c;命名為MyChromeDevUserData2.右鍵——Chrome——快捷方式——目標&#xff0c;在…

ChatGPT成知名度最高生成式AI產品,使用頻率卻不高

5月29日&#xff0c;牛津大學、路透社新聞研究所聯合發布了一份生成式AI&#xff08;AIGC&#xff09;調查報告。 在今年3月28日—4月30日對美國、英國、法國、日本、丹麥和阿根廷的大約12,217人進行了調查&#xff0c;深度調研他們對生成式AI產品的應用情況。 結果顯示&…

ElementUI之el-table標題列中顯示el-tooltip

ElementUI之el-table標題列中顯示el-tooltip 文章目錄 ElementUI之el-table標題列中顯示el-tooltip1. el-table標題列中顯示el-tooltip2. 實現代碼3. 展示效果 1. el-table標題列中顯示el-tooltip 在el-table-column標簽內添加具名插槽v-slot:header 在el-tooltip標簽中使用具…

【幾何】輸入0-360度任意的角度,求上面直線與橢圓相切點的坐標計算公式

?輸入0-360度任意的角度,求上面直線與橢圓相切點的坐標計算公式 使用積分計算 使用到的公式有橢圓公式: x 2 a 2 + y 2 b 2 = 1 \frac{x^2}{a^2}+\frac{y^2}{b^2} = 1 a2x2?+b2y2?=1 平面旋轉公式 X r = cos ? θ ? ( X s ? X O ) ? sin ? θ ? ( Y s ? Y O ) + X …

端午節粽子龍舟主題互動趣味小游戲效果是什么

端午三天樂&#xff0c;無論節日當天還是之前&#xff0c;行業商家都可以自己的品牌為主借勢營銷&#xff0c;趣味活動形式玩法和內容呈現達成多種效果&#xff0c;品牌傳播、公眾號漲粉、線下互動、商品促銷、用戶促活等。 在【雨科】平臺擁有多款端午節互動小游戲類型&#…

網易狼人殺 設置點擊自動發言

我們玩網易狼人殺 剛開始 都會發現 要按住麥克風才能發言 不得不說 相當的麻煩 我們可以點擊如下圖 右上角這個設置的齒輪 新彈出的設置面板上 勾選這個點擊發言 然后 我們只需要 點一下 就可以進入發言狀態 然后 再點一下即可停止發言 會方便非常多

zabbix事件告警監控:如何實現對相同部件觸發器告警及恢復的強關聯

有一定Zabbix使用經驗的小伙伴可能會發現&#xff0c;接收告警事件時&#xff0c;其中可能包含著大量不同的部件名&#xff0c;同一部件的事件在邏輯上具有很強關聯性&#xff0c;理論上應保持一致的告警/恢復狀態&#xff0c;但Zabbix默認并未對它們進行關聯&#xff0c;直接后…

AIGC降重:如何2分鐘降低論文AI率和查重率?推薦使用SpeedAI科研小助手

確保學術論文的獨立性與誠信性&#xff0c;對于學業的成就及學位的獲取至關重要&#xff0c;其中&#xff0c;論文的人工智能查重與降低AIGC相似度扮演著核心角色。 常規的查重手段主要圍繞查重軟件的運用和個體的自行審查&#xff1b;而降重則通常通過語句重組、同義替換、內…

單細胞分析(Signac): PBMC scATAC-seq 基因組區域可視化

引言 在本教學指南中&#xff0c;我們將探討由10x Genomics公司提供的人類外周血單核細胞&#xff08;PBMCs&#xff09;的單細胞ATAC-seq數據集。 加載包 首先加載 Signac、Seurat 和我們將用于分析人類數據的其他一些包。 if (!requireNamespace("EnsDb.Hsapiens.v75&qu…