【LeetCode:124. 二叉樹中的最大路徑和 + 二叉樹+遞歸】

在這里插入圖片描述

🚀 算法題 🚀

🌲 算法刷題專欄 | 面試必備算法 | 面試高頻算法 🍀
🌲 越難的東西,越要努力堅持,因為它具有很高的價值,算法就是這樣?
🌲 作者簡介:碩風和煒,CSDN-Java領域優質創作者🏆,保研|國家獎學金|高中學習JAVA|大學完善JAVA開發技術棧|面試刷題|面經八股文|經驗分享|好用的網站工具分享💎💎💎
🌲 恭喜你發現一枚寶藏博主,趕快收入囊中吧🌻
🌲 人生如棋,我愿為卒,行動雖慢,可誰曾見我后退一步?🎯🎯

🚀 算法題 🚀

在這里插入圖片描述
在這里插入圖片描述

🍔 目錄

    • 🚩 題目鏈接
    • ? 題目描述
    • 🌟 求解思路&實現代碼&運行結果
      • ? 二叉樹+遞歸
        • 🥦 求解思路
        • 🥦 實現代碼
        • 🥦 運行結果
    • 💬 共勉

🚩 題目鏈接

  • 124. 二叉樹中的最大路徑和

? 題目描述

二叉樹中的 路徑 被定義為一條節點序列,序列中每對相鄰節點之間都存在一條邊。同一個節點在一條路徑序列中 至多出現一次 。該路徑 至少包含一個 節點,且不一定經過根節點。

路徑和 是路徑中各節點值的總和。

給你一個二叉樹的根節點 root ,返回其 最大路徑和 。

示例 1:
在這里插入圖片描述

輸入:root = [1,2,3]
輸出:6
解釋:最優路徑是 2 -> 1 -> 3 ,路徑和為 2 + 1 + 3 = 6

示例 2:
在這里插入圖片描述

輸入:root = [-10,9,20,null,null,15,7]
輸出:42
解釋:最優路徑是 15 -> 20 -> 7 ,路徑和為 15 + 20 + 7 = 42

提示:

樹中節點數目范圍是 [1, 3 * 104]
-1000 <= Node.val <= 1000

🌟 求解思路&實現代碼&運行結果


? 二叉樹+遞歸

🥦 求解思路
  1. 設計一個遞歸函數,用來獲取二叉樹的最大路徑和,同時,用一個max來與每次左右子樹遞歸的最大數值+當前根節點的數值比較,更新最大值。
  2. 每次遞歸返回節點的最大貢獻值,可能是左子樹+當前節點,也可能是右子樹+當前節點,或者就是當前節點,最后不要忘了與0比較,只有大于0,才會取相應的節點。
  3. 有了基本的思路,接下來我們就來通過代碼來實現一下遞歸的解法。
🥦 實現代碼
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {private int max = Integer.MIN_VALUE;public int maxPathSum(TreeNode root) {process(root);return max;}public int process(TreeNode root) {if (root == null)return 0;int leftSum = process(root.left);int rightSum = process(root.right);max = Math.max(max, leftSum + rightSum + root.val);return Math.max((Math.max(leftSum, rightSum) + root.val), Math.max(root.val, 0));}
}
🥦 運行結果

在這里插入圖片描述


💬 共勉

最后,我想和大家分享一句一直激勵我的座右銘,希望可以與大家共勉!

在這里插入圖片描述

在這里插入圖片描述

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

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

相關文章

前端開發人員如何做好SEO

前端開發人員如何做好SEO SEO工作不僅限于專業人員。前端開發者也可以在日常開發中實施一些代碼層面的SEO優化。 以下是一些前端常用的SEO方法&#xff1a; 設置合理的title、keywords、description title、keywords、description對SEO至關重要&#xff0c;需貼合頁面內容編…

Codeforces Round 931 (Div. 2) (A~B)

比賽&#xff1a;Codeforces Round 931 (Div. 2) (A~B) 目錄&#xff1a;A B A題&#xff1a;Too Min Too Max 標簽: 構造算法&#xff08;constructive algorithms&#xff09;貪心&#xff08;greedy&#xff09;數學&#xff08;math&#xff09; 題目大意 對數組 a 找到…

【力扣hot100】刷題筆記Day19

前言 回溯回溯回溯&#xff01;早上整理檔案竟然用了桶排序&#xff0c;不愧是算法狂魔們 79. 單詞搜索 - 力扣&#xff08;LeetCode&#xff09; DFS class Solution:def exist(self, board: List[List[str]], word: str) -> bool:m, n len(board), len(board[0])# used…

mysql timestamp轉換為datetime

MySQL timestamp轉換為datetime的方法 1. 流程概述 在MySQL中&#xff0c;timestamp和datetime是兩種不同的數據類型。timestamp存儲了日期和時間&#xff0c;并且會自動更新&#xff0c;可以用于記錄數據的創建和修改時間。datetime則是一個固定的日期和時間&#xff0c;不會自…

談談高并發系統的設計方法論

談談高并發系統的設計方法論 何為高并發系統&#xff1f;什么是并發&#xff08;Conurrent&#xff09;&#xff1f;什么是高并發&#xff08;Hight Concurrnet&#xff09;&#xff1f;高并發的衡量指標有哪些&#xff1f; 實現高并發系統的兩大板塊高并發系統應用程序側的設計…

騰訊云學生服務器使用教程_申請騰訊云學生機詳細流程

2024年騰訊云學生服務器優惠活動「云校園」&#xff0c;學生服務器優惠價格&#xff1a;輕量應用服務器2核2G學生價30元3個月、58元6個月、112元一年&#xff0c;輕量應用服務器4核8G配置191.1元3個月、352.8元6個月、646.8元一年&#xff0c;CVM云服務器2核4G配置842.4元一年&…

還在用Jenkins?快來試試這款簡而輕的自動部署軟件!

最近發現了一個比 Jenkins 使用更簡單的項目構建和部署工具&#xff0c;完全可以滿足個人以及一些小企業的需求&#xff0c;分享一下。 Jpom 是一款 Java 開發的簡單輕量的低侵入式在線構建、自動部署、日常運維、項目監控軟件。 日常開發中&#xff0c;Jpom 可以解決下面這些…

Nginx的多線程支持探究

文章中心思想: Nginx本身并不直接支持多線程處理模型。它采用的是基于事件驅動的單線程或多進程架構,而非多線程模型。然而,通過Nginx的模塊和第三方擴展,可以實現類似多線程的并發處理效果。 詳細說明: Nginx,作為一款高性能的Web服務器和反向代理服務器,其架構和并發…

章節二、three.js開發入門與調試設置02;

一、軌道控制器查看物體&#xff1b; 1、基本概念 軌道控制器&#xff08;OrbitControls&#xff09;可以使得相機圍繞目標進行軌道運動&#xff1b; 2、代碼樣例 // 七、創建軌道控制器&#xff08;相機圍繞著物體捕捉視角&#xff09; const controls new OrbitControls(c…

吳恩達機器學習全課程筆記第五篇

目錄 前言 P80-P85 添加數據 遷移學習 機器學習項目的完整周期 公平、偏見與倫理 P86-P95 傾斜數據集的誤差指標 決策樹模型 測量純度 選擇拆分方式增益 使用分類特征的一種獨熱編碼 連續的有價值特征 回歸樹 前言 這是吳恩達機器學習筆記的第五篇&#xff0c…

《2023跨境電商投訴大數據報告》發布|亞馬遜 天貓國際 考拉海購 敦煌網 阿里巴巴

2023年&#xff0c;跨境電商API接口天貓國際、京東國際和抖音全球購以其強大的品牌影響力和市場占有率&#xff0c;穩坐行業前三的位置。同時&#xff0c;各大跨境電商平臺消費糾紛問題層出不窮。依據國內知名網絡消費糾紛調解平臺“電訴寶”&#xff08;315.100EC.CN&#xff…

javaEE--后端環境變量配置

目錄 pre 文件準備 最終運行成功結果 后端運行步驟 1.修改setenv文件 2.運行setenv&#xff0c;設置環境變量 3.查看jdk版本 4.修改mysql文件夾下的my文件 前端運行步驟 1.nodejs環境配置 2.查看node和npm版本 3.下載并運行npm 4.注冊登錄 pre 文件準備 最終運行…

VR轉接器:破解虛擬與現實邊界的革命性設備

VR轉接器&#xff0c;這一革命性的設備&#xff0c;為虛擬現實體驗帶來了前所未有的自由度。它巧妙地連接了虛擬與現實&#xff0c;使得用戶在享受VR眼鏡帶來的奇幻世界的同時&#xff0c;也能自由地在現實世界中活動。這一設計的誕生&#xff0c;不僅解決了VR眼鏡續航的瓶頸問…

2、云原生安全之可視化界面rancher的部署

文章目錄 1、rancher的部署1.1、安裝rancher1.2、配置k8s2、部署helm3、容器安全工具neuvector此時已經部署好了k8s,使用rancher來管理 rancher簡化了使用k8s的流程,可以圖形化管理k8s。 參考: https://blog.51cto.com/u_15343792/5000311https://docs.rancher.cn/docs/ra…

你們團隊是否有RocketMQ創建Topic、GID創建規范呢

這里是weihubeats,覺得文章不錯可以關注公眾號小奏技術 背景 早期在使用RocketMQ的時候&#xff0c;系統和開發人員不算多。所以topic的創建會非常隨意&#xff0c;各種千奇百怪的topic 比如: order_topic、ORDER_TOPIC、order-topic 各種奇奇怪怪的風格&#xff0c;用_的&a…

GO結構體

1. 結構體 Go語言可以通過自定義的方式形成新的類型&#xff0c;結構體就是這些類型中的一種復合類型&#xff0c;結構體是由零個或多個任意類型的值聚合成的實體&#xff0c;每個值都可以稱為結構體的成員。 結構體成員也可以稱為“字段”&#xff0c;這些字段有以下特性&am…

JS清空數組方法

清空數組的方法有多種&#xff0c;以下是幾種常見的方式&#xff1a; 1.使用 array.length 屬性將數組的長度設為0&#xff0c;這樣會移除數組中的所有元素&#xff1a; var arr [1, 3, 5]; arr.length 0; console.log(arr); // [] 2. 使用 array.splice() 方法&#xff0c;…

STM32 | 零基礎 STM32 第一天

零基礎 STM32 第一天 一、認知STM32 1、STM32概念 STM32:意法半導體基于ARM公司的Cortex-M內核開發的32位的高性能、低功耗單片機。 ST:意法半導體 M:基于ARM公司的Cortex-M內核的高性能、低功耗單片機 32&#xff1a;32位單片機 2、STM32開發的產品 STM32開發的產品&a…

【論文筆記】Improving Language Understanding by Generative Pre-Training

Improving Language Understanding by Generative Pre-Training 文章目錄 Improving Language Understanding by Generative Pre-TrainingAbstract1 Introduction2 Related WorkSemi-supervised learning for NLPUnsupervised pre-trainingAuxiliary training objectives 3 Fra…

Java 網絡面試題解析

1. Http 協議的狀態碼有哪些&#xff1f;含義是什么&#xff1f;【重點】 200&#xff1a;OK&#xff0c;客戶端請求成功。 301&#xff1a;Moved Permanently&#xff08;永久移除&#xff09;&#xff0c;請求的URL已移走。Response中應該包含一個Location URL&#xff0c;…