代碼隨想錄算法訓練營第十七天|LeetCode110 平衡二叉樹、LeetCode257 二叉樹的所有路徑

題1:

指路:LeetCode110 平衡二叉樹
思路與代碼:

左右子樹的高度差小于等于1。對于這個題,遞歸比迭代方便太多,我也想過迭代,但是我沒有寫出來,大家可以自己試一下。遞歸代碼如下:

class Solution {
public://遞歸int getHeight  (TreeNode* node) {if (node == NULL) {return 0;}int leftHeight = getHeight(node->left);if (leftHeight == -1) return -1;int rightHeight = getHeight(node->right);if (rightHeight == -1) return -1;int ans = abs(leftHeight - rightHeight);if (ans > 1) return -1;  // 絕對值超過1符合條件else return 1 + max(leftHeight, rightHeight);/* return abs(leftHeight - rightHeight) > 1 ? -1 : 1 + max(leftHeight, rightHeight);*/} bool isBalanced(TreeNode* root) {if (getHeight(root)== -1) return false;return true;/*return getHeight(root) == -1 ? false : true;*/}
};

題2:

指路:LeetCode257 二叉樹的所有路徑
思路與代碼:

遞歸進行前序遍歷,找到子節點記錄路徑之后回溯回退路徑。我還沒會呢,先看看代碼吧。

class Solution {
private:void treversal(TreeNode* cur, vector<int>& path, vector<string>& result) {path.push_back(cur->val);if (cur->left == NULL && cur->right == NULL) {string sPath;for (int i = 0; i < path.size() - 1; i++) {sPath += to_string(path[i]);sPath += "->";}sPath += to_string(path[path.size() - 1]);result.push_back(sPath);return ;}if (cur->left) {treversal(cur->left, path, result);path.pop_back();}if (cur->right) {treversal(cur->right, path, result);path.pop_back();}}public:vector<string> binaryTreePaths(TreeNode* root) {vector<string> result;vector<int> path;if (root == NULL) return result;treversal(root, path, result);return result;}
};

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

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

相關文章

如何為ChatGPT編寫有效的提示詞:軟件開發者的指南

作為一名軟件開發者&#xff0c;特別是使用Vue進行開發的開發者&#xff0c;與ChatGPT等AI助手高效互動&#xff0c;可以極大地提升你的開發效率。本文將深入探討如何編寫有效的提示詞&#xff0c;以便從ChatGPT中獲取有用的信息和幫助。 1. 明確目標 在編寫提示詞之前&#…

后端之路第二站(正片)——SprintBoot之:分層解耦

很抽象&#xff0c;我自己也不好理解&#xff0c;僅作為一個前端轉后端的個人理解 一、先解釋一個案例&#xff0c;以這個案例來分析“三層架構” 這里我先解釋一下黑馬程序員里的這個案例&#xff0c;兄弟們看視頻的可以跳過這節課&#xff1a;Day05-08. 請求響應-響應-案例_…

【webrtc】m98:Call的創建及Call對音頻接收處理

call中多個流共享相同的輔助組件 這幾個是與外部共用的 線程傳輸send控制module 線程任務隊列工廠call的輔助組件中各種統計以及接收測的cc是自己創建的 call自己的多個輔助組件是外部傳遞來的 call 創建多個接收流 這里用一個set 來保存所有指針,并沒有要map的意思:

【因果推斷從入門到精通二】隨機實驗3

目錄 檢驗無因果效應假說 硬幣投擲的特殊性何在&#xff1f; 檢驗無因果效應假說 無因果效應假說認為&#xff0c;有些人存活&#xff0c;有些人死亡&#xff0c;但接受mAb114治療而不是ZMapp與此無關。在174例接受mAb14治療的患者中&#xff0c;113/17464.9%存活了28天&…

【MySQL精通之路】InnoDB(6)-磁盤結構

主要博客&#xff1a; 【MySQL精通之路】InnoDB存儲引擎-CSDN博客 1 表 2 索引 【MySQL精通之路】InnoDB(6)-磁盤結構(2)-索引-CSDN博客 3 表空間 【MySQL精通之路】InnoDB(6)-磁盤結構(3)-表空間-CSDN博客 4 雙寫緩沖區 【MySQL精通之路】InnoDB(6)-磁盤結構(4)-雙寫緩沖…

修改MySQL root用戶密碼

ALTER USER ‘root’‘localhost’ IDENTIFIED BY ‘new_password’; ALTER USER ‘root’‘%’ IDENTIFIED BY ‘new_password’; 》 SET GLOBAL read_only OFF; select * from mysql.user;

Java入門基礎學習筆記47——ArrayList

什么是集合呢&#xff1f; 集合是一種容器&#xff0c;用來裝數據的&#xff0c;類似數組。 有數組&#xff0c;為什么還要學習集合呢&#xff1f; 數組定義完成并啟動后&#xff0c;長度就固定了。 而集合是大小可變&#xff0c;開發中用的最多的。 集合的特點&#xff1a;大…

匯聚榮科技有限公司優點有哪些?

在當今快速發展的科技時代&#xff0c;企業之間的競爭愈發激烈。作為一家專注于科技創新與研發的公司&#xff0c;匯聚榮科技有限公司憑借其卓越的技術實力和創新能力&#xff0c;在業界樹立了良好的口碑。那么&#xff0c;匯聚榮科技有限公司究竟有哪些優點呢?接下來&#xf…

C++利用TinyXML讀取XML文件

TinyXML是什么&#xff1f; TinyXML是一個輕量級的C XML解析器&#xff0c;它提供了一種簡單的方法來解析和操作XML文檔。TinyXML被設計為易于使用和集成到C項目中&#xff0c;并且非常適合處理小型XML文件。 以下是TinyXML的一些主要特點和優點&#xff1a; 輕量級: T…

OSPF問題

.ospf 選路 域內 --- 1類&#xff0c;2類LSA 域間 --- 3類LSA 域外 --- 5類&#xff0c;7類LSA --- 根據開銷值的計算規則不同&#xff0c;還分為類型1和類型2 ospf 防環機制 區域內防環&#xff1a;在同一OSPF區域內&#xff0c;所有路由器通過交換鏈路狀態通告&#xff…

VUE面試題(3)--vue常見面試題

1.vue優點 低耦合。視圖(View)可以獨立于Model變化和修改,一個ViewModel可以綁定到不同的"View"上,當View變化的時候Model可以不變,當Model變化的時候View也可以不變。 可重用性。你可以把一些視圖邏輯放在一個ViewModel里面,讓很多view重用這段視圖邏輯。 …

226.翻轉二叉樹

翻轉一棵二叉樹。 思路&#xff1a; 指針做交換 用遞歸&#xff08;前序or后序&#xff0c;中序不行&#xff09; 前序&#xff1a;中左右 遍歷到“中”的時候&#xff0c;交換它的左右孩子 然后分別對它的左孩子和右孩子使用“交換函數”&#xff08;定義的&#xff09;&a…

【網絡版本計算器的實現】

本章重點 理解應用層的作用, 初識HTTP協議理解傳輸層的作用, 深入理解TCP的各項特性和機制對整個TCP/IP協議有系統的理解對TCP/IP協議體系下的其他重要協議和技術有一定的了解學會使用一些分析網絡問題的工具和方法 ?注意!! 注意!! 注意!! 本課是網絡編程的理論基礎.是一個服務…

零基礎學Java第二十二天之迭代器 Iterator

迭代器 Iterator 的理解和相關集合 使用 1、理解 迭代器&#xff08;Iterator&#xff09;是設計模式中的一種&#xff0c;它允許程序員遍歷容器&#xff08;例如列表、集合等&#xff09;中的元素&#xff0c;而無需了解容器底層的實現細節。在編程中&#xff0c;迭代器提供了…

?第18章:JDK8-17新特性

1. 新特性概述 > 角度1&#xff1a;新的語法規則 &#xff08;多關注&#xff09;比如&#xff1a;lambda表達式、enum、annotation、自動拆箱裝箱、接口中的默認方法和靜態方法、switch表達式、record等> 角度2&#xff1a;增加、過時、刪除API比如&#xff1a;新的日期…

《子數整數》

描述 對于一個五位數a1?a2?a3?a4?a5?&#xff0c;可將其拆分為三個子數&#xff1a; sub1?a1?a2?a3? sub2?a2?a3?a4? sub3?a3?a4?a5? 例如&#xff0c;五位數20207可以拆分成 sub1?202 sub2?020(20) sub3?207 現在給定一個正整數K&#xff0c;要求你編程求…

【系統架構師】-論文-系統安全性與保密性設計

1、摘要: 2018 年初&#xff0c;我所在的公司為一票務公司開發開票業務平臺的建設。我在該項目中擔任系統架構設計師的職務&#xff0c;主要負責設計平臺系統架構和安全體系架構。該平臺以采用 B/S 架構服務用戶&#xff0c;采用”平臺應用”的模式解決現有應用單機獨立開票的模…

【YOLOv5/v7改進系列】替換激活函數為SiLU、ReLU、LeakyReLU、FReLU、PReLU、Hardswish、Mish、ELU等

一、導言 激活函數在目標檢測中的作用至關重要&#xff0c;它們主要服務于以下幾個關鍵目的&#xff1a; 引入非線性&#xff1a;神經網絡的基本構建塊&#xff08;如卷積層、全連接層等&#xff09;本質上是線性變換&#xff0c;而激活函數通過引入非線性&#xff0c;使得網絡…

urllib3 發起https請求時報錯 certificate verify failed

情況描述 近期需要訪問https的一個API接口同步數據&#xff0c;在辦公主機完成urllib3初步的測試以后&#xff0c;到測試環境驗證發現無法請求&#xff0c;報錯&#xff1a; 提示&#xff1a;解決辦法可以直接到第四節查看 一、提示 SSL 認證失敗 OpenSSL.SSL.Error: [(SSL …

保安維穩,四信以科技構筑高速公路安全智慧防線

近日&#xff0c;廣東梅大高速發生嚴重塌方事故&#xff0c;造成了嚴重的人員傷亡和財產損失。這一事件在公眾心中敲響了安全的警鐘&#xff0c;再次引起了公眾對于交通設施運營安全性的重點關注。 國務院安委會辦公室和國家防災減災救災委員會辦公室等主管機構先后印發緊急通知…