二叉樹 遍歷迭代法

二叉樹 遍歷迭代法

Leetcode 94

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
// 前序迭代
// class Solution {
// public:
//     vector<int> inorderTraversal(TreeNode* root) {
//         stack<TreeNode*> st;
//         vector<int> path;
//         if(root == nullptr) return path;
//         st.push(root);//         while(!st.empty()){
//             TreeNode* cur = st.top();
//             st.pop();
//             path.push_back(cur->val);  // 中
//             if(cur->right != nullptr) st.push(cur->right);  // 右
//             if(cur->left != nullptr) st.push(cur->left);  // 左
//         }
//         return path;
//     }
// };// 中序迭代
class Solution{
public:vector<int> inorderTraversal(TreeNode* root){stack<TreeNode*> st;vector<int> path;TreeNode* cur = root;while(cur != nullptr || !st.empty()){if(cur != nullptr){st.push(cur);cur = cur->left;  // 左}else{cur = st.top();st.pop();path.push_back(cur->val);  // 中cur = cur->right;  // 右}}return path;}
};// 后序迭代  左右中,將之前前序中左右->中右左->(反轉)左右中
// class Solution {
// public:
//     vector<int> inorderTraversal(TreeNode* root) {
//         stack<TreeNode*> st;
//         vector<int> path;
//         if(root == nullptr) return path;
//         st.push(root);//         while(!st.empty()){
//             TreeNode* cur = st.top();
//             st.pop();
//             path.push_back(cur->val);  // 中
//             if(cur->left != nullptr) st.push(cur->left);  // 左
//             if(cur->right != nullptr) st.push(cur->right);  // 右
//         }
//         reverse(path.begin(), path.end());
//         return path;
//     }
// };

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

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

相關文章

一個產品需求工程師繁忙的一天

早晨&#xff1a;開啟新的一天 7:00 AM - 起床 早晨七點準時起床。洗漱、早餐后&#xff0c;查看手機上的郵件和消息&#xff0c;提前了解今天的工作安排和優先事項。 8:00 AM - 前往公司 坐地鐵前往公司。在地鐵上&#xff0c;習慣性地閱讀一些行業資訊和市場報告&#xff0…

使用SpringBoot整合Servlet

一、SpringBoot和Servlet的整合 1、用注解WebServlet配置Servlet映射 創建一個SpringBoot的web工程&#xff0c;在工程用創建一個Servlet 2、在SpringBoot的啟動類上加注解ServletComponentScan 二、額外的方式 1、不使用WebServlet配置Servlet映射 創建一個SpringBoot工…

RabbitMQ延時隊列(實現定時任務)

消息的TTL(Time To Live)就是消息的存活時間。 RabbitMQ可以對隊列和消息分別設置TTL。 對隊列設置存活時間&#xff0c;就是隊列沒有消費者連著的保留時間。 對每一個單獨的消息單獨的設置存活時間。超過了這個時間&#xff0c;我們認為這個消息就死了&#xff0c;稱之為死…

代碼隨想錄算法訓練營:19/60

非科班學習算法day19 | LeetCode530:二叉搜索樹的最小絕對差 &#xff0c;Leetcode501:二叉搜索樹的眾數 &#xff0c;Leetcode236:二叉樹的最近公共祖先 目錄 介紹 一、LeetCode題目 1.LeetCode530:二叉搜索樹的最小絕對差 題目解析 2.Leetcode501: 二叉搜索樹的眾數 …

軟設之加工邏輯之結構化語言

結構化語言是一種介于自然語言和形式化語言之間的半形式語言&#xff0c;是自然語言的一個受限子集 外層&#xff1a;用來描述控制結構&#xff0c;采用順序&#xff0c;選擇和重復3種基本結構 1.順序結構&#xff1a;一組祈使語句&#xff0c;選擇語句&#xff0c;重復語句的…

個人對JVM的一點理解

JVM&#xff08;Java 虛擬機&#xff09;是 Java 程序能夠跨平臺運行的關鍵。它負責將 Java 字節碼轉換為機器碼并執行。 JVM 主要由類加載器、運行時數據區、執行引擎和本地方法接口等部分組成。運行時數據區包括方法區、堆、虛擬機棧、本地方法棧和程序計數器等。 GC&#xf…

遠期利率(Forward Rate)是什么?以及遠期利率在期貨合約中的應用

遠期利率是什么&#xff1f; 中文版 遠期利率&#xff08;Forward Rate&#xff09;是指從未來某一時間段開始適用的利率。它是金融市場上的一種合約利率&#xff0c;表示在某個特定日期開始的一段時間內的預期利率。這種利率可以通過現有的即期利率&#xff08;Spot Rate&am…

6.26考試前總結

一、選擇 1、運算符重載&#xff1a;&#xff08;1&#xff09;不可重載&#xff1a;. .* :: ?: sizeof &#xff08;2&#xff09;只成員函數&#xff1a;、[]、&#xff08;&#xff09;、-> ps:和[]需要加&&#xff0c;返回類&#xff0c;[]返回中括號內…

SpringBoot根據不同IP限制接口的QPS

根據對方IP地址來限制接口的QPS&#xff08;每秒查詢率&#xff09;&#xff0c;你可以結合Spring Boot應用、Guava的RateLimiter或者自定義的并發控制邏輯來實現。以下是一個基于Guava RateLimiter和Spring Boot的示例&#xff0c;展示如何根據IP地址來限制接口的QPS&#xff…

鏡頭下的光學

說實話&#xff0c;當我看到幾何光學的內容全是初中的解析幾何的時候&#xff0c;我就覺得講的方式太原始了&#xff0c;而且太過復雜也看不懂。所以我嘗試做了數學建模&#xff0c;發現建模之后模型可以解釋一些物理現象&#xff0c;也不會有矛盾的地方&#xff0c;那就算過得…

【Python系列】探索 Python 環境管理工具:conda 與 pip 的比較

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

簡過網:專科生可以考的編制崗位有哪些?這5個鐵飯碗要抓住了!

專科生可以考的編制崗位有哪些&#xff1f;以下這幾種可以考的&#xff0c;尤其是應屆畢業生&#xff0c;一定要抓住機會哦&#xff01; ? 一、三支一扶&#xff1a;專科生可報考&#xff0c;期滿可轉編。 三支一扶&#xff1a;支農、支醫生、支教、扶貧 工作時間一般為2年&…

深入探索Postman:前置與后置腳本的編寫與應用

Postman是一款廣受歡迎的API開發和測試工具&#xff0c;它提供了豐富的功能來簡化接口測試過程。在Postman中&#xff0c;前置腳本&#xff08;Pre-request Script&#xff09;和后置腳本&#xff08;Tests Script&#xff09;是兩個強大的功能&#xff0c;允許用戶在發送請求之…

秋招Java后端開發沖刺——非關系型數據庫篇(Redis)

一、非關系型數據庫 1. 主要針對的是鍵值、文檔以及圖形類型數據存儲。 2. 特點&#xff1a; 特點說明靈活的數據模型支持多種數據模型&#xff08;文檔、鍵值、列族、圖&#xff09;&#xff0c;無需預定義固定的表結構&#xff0c;能夠處理各種類型的數據。高擴展性設計為水…

安全技術和防火墻(一)

安全技術和防火墻 安全技術 入侵檢測系統&#xff1a;特點是不阻斷網絡訪問&#xff0c;主要提供報警和事后監督 不主動介入 (監控) 入侵防御系統&#xff1a;透明模式工作 &#xff0c;數據包,網絡監控,服務攻擊,木馬,蠕蟲,系統漏洞 等 進行準確的分析判斷 判斷為攻擊行為后會…

高校心理咨詢管理系統

摘 要 隨著高校學生心理問題的增多&#xff0c;心理咨詢服務在高校中的重要性日益凸顯。然而&#xff0c;傳統的心理咨詢管理方式存在著諸多問題&#xff0c;如信息不透明、咨詢師資源不足等。為了解決這些問題&#xff0c;本文設計并實現了一種基于Java Web的高校心理咨詢管理…

model_json_schema

model_json_schema示列 from pydantic import BaseModel, Field, ValidationError, field_validatorclass User(BaseModel):id: int Field(default0, lt100, gt0)username: stremail: strfield_validator(username)def name_must_alpha(cls, v):assert v.isalpha(), name mus…

浸式冷卻設計參數

每天一篇行業發展資訊&#xff0c;讓大家更及時了解外面的世界。 更多資訊&#xff0c;請關注B站/公眾號【萊歌數字】&#xff0c;有視頻教程~~ 兩相被動浸入冷卻是指使用改變相的沸騰液體來去除一個或多個表面的熱量的冷卻系統。 然后蒸汽被移動到冷凝器&#xff0c;然后被…

LaTeX中添加矩陣分塊虛線并設置虛線疏密

對于大型矩陣&#xff0c;有時需要添加分塊虛線。 方法為使用arydshln宏包&#xff0c;然后在array環境中設置虛線。需要注意的是&#xff0c;使用矩陣環境需要搭配amsmath宏包使用&#xff0c;且需放在amsmath宏包之后。即導言區設置為 \usepackage{amsmath} \usepackage{ary…

日語培訓日語等級考試柯橋小語種學習語言學校

什么是外來語 外來語是指在日本的國語中使用的來源于外國語言的詞匯。但狹義上的外來語則是指來源于歐美國家語言的詞匯&#xff0c;其中大部分是來源于英美語系的詞匯。日語中的漢語詞匯很多&#xff0c;大多是自古以來從中國引進的&#xff0c;從外來語的定義看&#xff0c;漢…