day-21 代碼隨想錄算法訓練營(19)二叉樹part07

530.二叉搜索樹的最小絕對差

思路一:二叉搜索樹的中序遍歷必為升序數組,加入數組后計算相鄰兩個數差值,即可求出最小絕對差

思路二:同樣的思路,中序遍歷,直接使用指針記錄上一個節點,同時更新差值
class Solution {
public:int res=INT_MAX;TreeNode*pre=nullptr;void judge(TreeNode*root){if(root==nullptr) return;judge(root->left);if(pre!=nullptr)res=min(res,root->val-pre->val);pre=root;judge(root->right);}int getMinimumDifference(TreeNode* root) {//思路二:雙指針遞歸,中序遍歷,計算兩節點之間差值judge(root);return res;}
};

501.二叉搜索樹中的眾數

思路一:使用map和vector,遍歷二叉搜索樹用map記錄元素出現的次數,一次遍歷map求出最大次數,二次遍歷map求出等于最大次數的值,加入到vector中思路二:使用指針記錄pre前一個元素,當pre元素和當前cur元素相等時,更新count值;當pre元素和當前cur元素不等時,使用count更新最大次數值maxNum;
當count值大于maxNum時,清空數組,把新的元素加入數組;
當count值等于maxNum時,把該元素加入數組

236.二叉樹的最近公共祖先

思路一:第一次遍歷二叉樹使用左0右1來記錄p和q的路徑,然后找出兩個路徑的相同值,再使用該相同值去遍歷二叉樹,最后遍歷到的值即為最近公共祖先

思路二:(自底向上)后序遍歷,考慮兩個指定值的分布情況,使用兩個指針保存兩個指定值,找到直接返回,找不到返回nullptr
class Solution {
public:TreeNode*judge(TreeNode*root,TreeNode*p,TreeNode*q){if(root==nullptr) return root; if(root==p || root==q) return root;//遍歷到值時直接返回TreeNode*left=judge(root->left,p,q);TreeNode*right=judge(root->right,p,q);if(left!=nullptr && right!=nullptr) return root;//指定值分布再兩側if(right!=nullptr) return right;//指定值分布在右側if(left!=nullptr) return left;//指定值分布在左側return nullptr;//重點:左右都不存在需返回nullptr}TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {//后序遍歷return judge(root,p,q);}
};

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

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

相關文章

KAFKA第二課之生產者(面試重點)

生產者學習 1.1 生產者消息發送流程 在消息發送的過程中,涉及到了兩個線程——main線程和Sender線程。在main線程中創建了一個雙端隊列RecordAccumulator。main線程將消息發送給RecordAccumulator,Sender線程不斷從RecordAccumulator中拉取消息發送到K…

03-基礎入門-搭建安全拓展

基礎入門-搭建安全拓展 1、涉及的知識點2、常見的問題3、web權限的設置4、演示案例-環境搭建(1)PHPinfo(2)wordpress(3)win7虛擬機上使用iis搭建網站(4)Windows Server 2003配置WEB站…

C#應用處理傳入參數 - 開源研究系列文章

今天介紹關于C#的程序傳入參數的處理例子。 程序的傳入參數應用比較普遍,特別是一個隨操作系統啟動的程序,需要設置程序啟動的時候不顯示主窗體,而是在后臺運行,于是就有了傳入參數問題,比如傳入/h或者/min等等。所以此…

YOLO v8目標跟蹤詳細解讀(二)

上一篇,結合代碼,我們詳細的介紹了YOLOV8目標跟蹤的Pipeline。大家應該對跟蹤的流程有了大致的了解,下面我們將對跟蹤中出現的卡爾曼濾波進行解讀。 1.卡爾曼濾波器介紹 卡爾曼濾波(kalman Filtering)是一種利用線性…

歐拉OS 使用 CentOS 7 yum repo

一、下載CentOS的repo的yum文件 任何基于CentOS的yum的repo 的url是這樣的: 但歐拉OS輸出這個變量為:openEuler 20.03 (LTS-SP3) 那明顯歐拉想要使用這個yum的url找不到這個版本, 所以直接講這個變量替換為 7, Centos 7的7 然后執行&…

wget 詳解

wget 詳解 wget 詳解基本用法:命令參數:遞歸下載:斷點續傳:限速下載:后臺下載: 示例 wget 詳解 wget(Web Get)是一個用于從網絡上下載文件的命令行工具,常用于在 Linux …

從零實戰SLAM-第七課(多視角幾何)

在七月算法報的班,老師講的蠻好。好記性不如爛筆頭,關鍵內容還是記錄一下吧,課程入口,感興趣的同學可以學習一下。 --------------------------------------------------------------------------------------------------------…

整型int溢出引起的crash

線上系統發生了crash&#xff0c;后發現是整型溢出。 1、初始化函數的偽代碼&#xff1a; init_mem(int count, int size){for(int i0; i<count; i)mem_list[i] i*size; # 溢出發生的地方} 2、問題分析&#xff1a; 原有的變量 i、size 為有符號的int類型&#xff0c;i…

設計模式--策略模式

目錄 一.場景 1.1場景 2.2 何時使用 2.3個人理解 二. 業務場景練習 2.1業務: 2.2具體實現 2.3思路 三.總結 3.1策略模式的特點&#xff1a; 3.2策略模式優點 3.3策略模式缺點 一.場景 1.1場景 許多相關的類僅僅是行為有異&#xff0c;也就是說業務代碼需要根據場景不…

Android數字價格變化的動畫效果的簡單實現

原理&#xff1a;使用ValueAnimator屬性動畫類實現&#xff0c;它通過值的改變手動設置對象的屬性值來實現動畫效果。直接貼代碼&#xff1a; public static void doNumberAnim(TextView tvPrice, float startNumber, float endNumber) {ValueAnimator animator ValueAnimato…

C語言中的 RSA加密和解密算法: 深度探索與實現

C語言中的 RSA加密和解密算法: 深度探索與實現 RSA加密算法是一種非對稱加密算法&#xff0c;即公開密鑰加密&#xff0c;私有密鑰解密。在公開密鑰加密和私有密鑰解密的過程中&#xff0c;密鑰是不同的&#xff0c;這是與其他加密算法的主要區別。RSA算法的安全性依賴于大數分…

ssm+mybatis無法給帶有下劃線屬性賦值問題

原因&#xff1a;mybaitis根據配置&#xff0c;將有下劃線的字段名改為了駝峰格式。 具體見&#xff1a;ssmmybatis無法給帶有下劃線屬性賦值問題&#xff0c;無法獲取數據庫帶下劃線的字段值 - 開發者博客 解決方式&#xff1a; 直接將實體類中的下劃線去掉返回值使用resul…

歸并排序 與 計數排序

目錄 1.歸并排序 1.1 遞歸實現歸并排序&#xff1a; 1.2 非遞歸實現歸并排序 1.3 歸并排序的特性總結: 1.4 外部排序 2.計數排序 2.1 操作步驟: 2.2 計數排序的特性總結: 3. 7種常見比較排序比較 1.歸并排序 基本思想: 歸并排序(MERGE-SORT)是建立在歸并操作上的一種…

代理技術在網絡安全、爬蟲和數據隱私中的多重應用

1. Socks5代理&#xff1a;靈活的數據中轉 Socks5代理協議在網絡通信中起著關鍵作用。與其他代理技術不同&#xff0c;Socks5代理不僅支持TCP連接&#xff0c;還能夠處理UDP流量&#xff0c;使其在需要實時數據傳輸的場景中表現尤為出色。通過將請求和響應中轉到代理服務器&am…

redis分布式集群-redis+keepalived+ haproxy

redis分布式集群架構&#xff08;RedisKeepalivedHaproxy&#xff09;至少需要3臺服務器、6個節點&#xff0c;一臺服務器2個節點。 redis分布式集群架構中的每臺服務器都使用六個端口來實現多路復用&#xff0c;最終實現主從熱備、負載均衡、秒級切換的目標。 redis分布式集…

使用Edge和chrom擴展工具(GoFullPage)實現整頁面截圖或生成PDF文件

插件GoFullPage下載&#xff1a;點擊免費下載 如果在瀏覽網頁時&#xff0c;有需要整個頁面截圖或導出PDF文件的需求&#xff0c;這里分享一個Edge瀏覽器的擴展插件&#xff1a;GoFullPage。 這個工具可以一鍵實現頁面從上到下滾動并截取。 一、打開“管理擴展”&#xff08;…

網絡設備(防火墻、路由器、交換機)日志分析監控

外圍網絡設備&#xff08;如防火墻、路由器、交換機等&#xff09;是關鍵組件&#xff0c;因為它們控制進出公司網絡的流量。因此&#xff0c;監視這些設備的活動有助于 IT 管理員解決操作問題&#xff0c;并保護網絡免受攻擊者的攻擊。通過收集和分析這些設備的日志來監控這些…

Python 3 使用Hadoop 3之MapReduce總結

MapReduce 運行原理 MapReduce簡介 MapReduce是一種分布式計算模型&#xff0c;由Google提出&#xff0c;主要用于搜索領域&#xff0c;解決海量數據的計算問題。 MapReduce分成兩個部分&#xff1a;Map&#xff08;映射&#xff09;和Reduce&#xff08;歸納&#xff09;。…

tauri-react:快速開發跨平臺軟件的架子,支持自定義頭部和窗口陰影效果

tauri-react 一個使用 taurireacttsantd 開發跨平臺軟件的模板&#xff0c;支持窗口頭部自定義和窗口陰影&#xff0c;不用再自己做適配了&#xff0c;拿來即用&#xff0c;非常 nice。 開原地址&#xff1a;GitHub - Sjj1024/tauri-react: 一個最基礎的使用tauri和react開發…

生成式 AI 在泛娛樂行業的應用場景實踐 – 助力風格化視頻內容創作

感謝大家閱讀《生成式 AI 行業解決方案指南》系列博客&#xff0c;全系列分為 4 篇&#xff0c;將為大家系統地介紹生成式 AI 解決方案指南及其在電商、游戲、泛娛樂行業中的典型場景及應用實踐。目錄如下&#xff1a; 《生成式 AI 行業解決方案指南與部署指南》《生成式 AI 在…