Leetcode617合并二叉樹

理解題意:相同節點位置上,都有數據的話,節點值相加,只有一方有數據的話,把有數據的部分及相關子樹保留下來。

考察操作兩棵二叉樹,二叉樹的遍歷。

一般有兩種解決方式:

????????遞歸|迭代。

區別:

????????遞歸,重復方法調用,自己調自己,進方法的棧。

????????迭代的話,自己創建一個隊列或者棧來維持狀態。

????????遞歸調用比較深的話,會內存溢出,因為要存的相關狀態太多了,所以用迭代比較好,自己創建一個棧來維護必需的信息即可。

????????沒有很深的調用層次的話,兩個差別不大。

1.遞歸?

public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {if(Objects.isNull(root1)) return root2;if(Objects.isNull(root2)) return root1;//前序處理:結果由root1返回,不額外創建節點//其他遍歷順序,調整對應順序即可,沒啥限制//中間處理root1.val+=root2.val;//左子樹處理root1.left=mergeTrees(root1.left,root2.left);//右子樹處理root1.right=mergeTrees(root1.right,root2.right);return root1;}

?

2.迭代

public TreeNode mergeTrees2(TreeNode root1, TreeNode root2) {if(Objects.isNull(root1)) return root2;if(Objects.isNull(root2)) return root1;//自定義棧,保存要處理的節點,處理后pop彈出,處理完時,棧空Stack<TreeNode> stack=new Stack<>();//這個入棧順序是因為棧先進后出stack.push(root2);stack.push(root1);while(!stack.isEmpty()) {TreeNode node1=stack.pop();TreeNode node2=stack.pop();//根節點處理node1.val+= node2.val;//非空節點入棧if(node1.left!=null&&node2.left!=null){stack.push(node2.left);stack.push(node1.left);}if(node1.right!=null&&node2.right!=null){stack.push(node2.right);stack.push(node1.right);}//結果由root1返回,root1缺失的部分,root2補全if(node1.left==null&&node2.left!=null){node1.left=node2.left;}if(node1.right==null&&node2.right!=null){node1.right=node2.right;}}return root1;}

優化的余地

            //非空節點入棧if(node1.left!=null&&node2.left!=null){stack.push(node2.left);stack.push(node1.left);}if(node1.right!=null&&node2.right!=null){stack.push(node2.right);stack.push(node1.right);}//結果由root1返回,root1缺失的部分,root2補全if(node1.left==null&&node2.left!=null){node1.left=node2.left;}if(node1.right==null&&node2.right!=null){node1.right=node2.right;}-------------------------分界線--------------------------------------//非空節點入棧if(node1.left!=null&&node2.left!=null){stack.push(node2.left);stack.push(node1.left);}else if(node1.left==null){ //結果由root1返回,root1缺失的部分,root2補全node1.left=node2.left;}if(node1.right!=null&&node2.right!=null){stack.push(node2.right);stack.push(node1.right);}else if(node1.right==null){node1.right=node2.right;}

3.時間復雜度分析

1.遞歸

? ? ? ? 時間復雜度:O(n)

? ? ? ? 空間復雜度:O(1)

2.迭代

? ? ? ? 時間復雜度:O(n)

? ? ? ? 空間復雜度:O(n)

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

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

相關文章

element 中文地址

Element - The worlds most popular Vue UI framework 2 Menu 菜單 | Element Plus 3 偵聽器 | Vue.js vue中文官網

軟件測試職業規劃導圖

公司開發的產品專業性較強&#xff0c;軟件測試人員需要有很強的專業知識&#xff0c;現在軟件測試人員發展出現了一種測試管理者不愿意看到的景象&#xff1a; 1、開發技術較強的軟件測試人員轉向了軟件開發(非測試工具開發)&#xff1b; 2、業務能力較強的測試人員轉向了軟件…

ubuntu創建新用戶, 并賦予root權限

在Ubuntu上創建新用戶可以通過adduser命令來完成。以下是創建新用戶的基本步驟&#xff1a; 打開終端&#xff1a;你可以按下Ctrl Alt T來打開終端。 使用sudo命令以管理員權限執行adduser命令。例如&#xff0c;如果你要創建一個名為newuser的新用戶&#xff0c;運行以下命…

【EI會議征稿】第三屆電子信息技術國際學術會議(EIT 2024)

The 3rd International Conference on Electronic Information Technology 第三屆電子信息技術國際學術會議&#xff08;EIT 2024&#xff09; 電子信息工程在我國信息化產業的發展過程中舉足輕重&#xff0c;且隨著現代社會的發展&#xff0c;航空航天領域、制造業領域和智能…

LSTM+CNN實現時間序列預測(負荷預測)

文章目錄 LSTM+CNN實現時間序列預測(PyTorch版)基于PyTorch搭建LSTM+CNN模型實現風速時間序列預測配置類時序數據集的制作數據歸一化數據集加載器搭建LSTM+CNN模型定義模型、損失函數、優化器模型訓練可視化結果十、完整源碼LSTM+CNN實現時間序列預測(Keras版)源碼模型訓練繪制…

每日一題:LeetCode-102.二叉樹的層序遍歷

每日一題系列&#xff08;day 03&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…

NX二次開發UF_CSYS_set_wcs 函數介紹

文章作者&#xff1a;里海 來源網站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CSYS_set_wcs Defined in: uf_csys.h int UF_CSYS_set_wcs(tag_t csys_id ) overview 概述 Sets the work coordinate system to the prototype coordinate system whose tag y…

為什么技術干不過產品?

近年來&#xff0c;我們經常會聽到一些關于技術和產品之間關系的討論&#xff0c;包括最近的ChatGPT之父奧特曼被董事會開除事件。在這個問題上&#xff0c;有人認為技術應該優于產品&#xff0c;因為技術是實現產品的基礎。然而&#xff0c;也有人認為產品比技術更重要&#x…

基于低代碼平臺搭建應用程序

目錄 一、背景 二、如何基于低代碼開發應用&#xff1f; 1.創建數據表 2.添加數據表屬性 3.配置功能 4.數據篩選 5.數據集顯示&功能發布 三、寫在最后 一、背景 很多時候&#xff0c;市場上的管理軟件魚龍混雜&#xff0c;找一些外包團隊在實際應用中效果并不理想&#xff…

企業微信平臺:連接你我,引領數字化未來

近年來&#xff0c;隨著移動互聯網的飛速發展&#xff0c;社交媒體平臺如微信已經成為人們生活中必不可少的一部分。對于企業而言&#xff0c;微信平臺不僅是一個重要的宣傳渠道&#xff0c;更是實現數字化轉型的關鍵工具。本文將探討企業微信平臺的發展趨勢、運營策略以及成功…

開源還是閉源(=°Д°=)!!趨勢表明,開源技術在諸多領域中日益受到重視

開源和閉源&#xff0c;兩種截然不同的開發模式&#xff0c;對于大模型的發展有著重要影響。開源讓技術共享&#xff0c;吸引了眾多人才加入&#xff0c;推動了大模的創新。而閉源則保護了商業利益和技術優勢&#xff0c;為大模型的商業應用提供了更好的保障。 一、開源和閉源的…

堆和前綴樹

1 堆 1.1 堆結構 堆是用數組實現的完全二叉樹結構完全二叉樹中如果每棵樹的最大值都在頂部就是大根堆&#xff0c;最小值在頂部就是小根堆堆結構的heapInsert就是插入操作&#xff0c;heapify是取出數組后進行堆結構調整的操作優先級隊列結構就是堆結構 public class Heap {…

通過ros系統中websocket中發送sensor_msgs::Image數據給web端顯示(三)

通過ros系統中websocket中發送sensor_msgs::Image數據給web端顯示(三) 不使用base64編碼方式傳遞 #include <ros/ros.h> #include <signal.h> #include <sensor_msgs/Image.h> #include <message_filters/subscriber.h> #include <message_filter…

【正點原子STM32連載】第五十九章 T9拼音輸入法實驗(Julia分形)實驗 摘自【正點原子】APM32F407最小系統板使用指南

1&#xff09;實驗平臺&#xff1a;正點原子APM32F407最小系統板 2&#xff09;平臺購買地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套實驗源碼手冊視頻下載地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html## 第五十…

關于 token 和證書

關于 token 和證書 在網絡檢測中&#xff0c;Token通常是指一種特殊的令牌&#xff0c;用于在分布式系統中進行資源控制和訪問管理。Token可以用于驗證客戶端的身份、限制客戶端的訪問權限以及控制客戶端對某些資源的使用。 在網絡檢測中&#xff0c;Token通常用于以下幾個方…

uniapp IOS從打包到上架流程(詳細簡單) 原創

? 1.登入蘋果開發者網站&#xff0c;打開App Store Connect ? 2.新App的創建 點擊我的App可以進入App管理界面&#xff0c;在右上角點擊?新建App 即可創建新的App&#xff0c;如下圖&#xff1a; ? 3.app基本信息填寫 新建完App后&#xff0c;需要填寫App的基本信息&…

SOLIDWORKS 2024新功能之CAM篇

SOLIDWORKS 2024 新功能 CAM篇目錄概述 ? 附加探測周期參數 ? 反轉切割的固定循環螺紋加工 ? 包含裝配體的零件的正確進給/速度數據 ? Heidenhain 探測類型 ? 2.5 軸特征向導中島嶼的終止條件 ? 鏈接輪廓銑削操作的切入引導和切出引導參數 ? 螺紋銑削操作的最小孔…

網絡工程師眼中的網站安全:應對攻擊的綜合措施

作為一名專業的網絡工程師&#xff0c;我們深知網站面臨各種攻擊威脅的現實。在構建網站安全的同時&#xff0c;綜合運用技術手段和管理策略是至關重要的。在這篇文章中&#xff0c;我們將從網絡工程師的視角出發&#xff0c;介紹如何解決網站被攻擊的問題&#xff0c;并在其中…

飛凌嵌入式受邀參加「2023年電子工程師大會」并做主旨演講

11月23日&#xff0c;華秋電子發燒友在深圳總部舉辦了「2023年電子工程師大會暨第三屆社區年度頒獎」活動&#xff0c;邀請到了高校教授、企業創始人及高管、行業技術專家、電子工程師等眾多嘉賓到場&#xff0c;呈現并傳播了電子產業動態、最新技術、應用案例及開源硬件項目。…

C#FlaUI.UIA實現發送微信消息原理

一 準備 .NetFramework 4.8 FlaUI.UIA3 4.0.0 FlaUInspect V1.3.0 1下載FlaUInspect https://github.com/FlaUI/FlaUInspect FlaUInspect V1.3.0 百度網盤下載 2 NuGet 引用 flaUI.UIA3 4.0.0 二代碼部分 1 引用FlaUI using FlaUI.Core; using FlaUI.Core.Automatio…