面試手撕——迭代法中序遍歷二叉樹

思路

訪問順序和處理順序不一致導致迭代法難寫,體現在總要先遍歷根節點,才能訪問左右孩子,用null標記,null標記的節點表示已經訪問過了,下一次可以處理,所以在當前棧頂節點不是null的時候,都要進行入棧,由于是左根右的處理順序,所以壓棧的時候要右根左壓棧。

代碼

import java.util.Stack;public class InOrderTraversalBinaryTree {static class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(int v){this.val = v;this.left = null;this.right = null;}}static void InOrderTra(TreeNode root){if(root == null) return;if(root.left != null) InOrderTra(root.left);System.out.println(root.val);if(root.right != null) InOrderTra(root.right);}public static void main(String[] args) {TreeNode root = new TreeNode(7);TreeNode left = new TreeNode(3);TreeNode right = new TreeNode(10);root.left = left;root.right = right;
//      遞歸法
//        InOrderTra(root);Stack<TreeNode> st = new Stack<>();if(root != null)st.push(root);while(!st.isEmpty()){TreeNode node = st.peek();if(node != null){st.pop();if(node.right != null) st.push(node.right);st.push(node);st.push(null);if(node.left != null) st.push(node.left);}else{st.pop();node = st.peek();st.pop();System.out.println(node.val);}}}}

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

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

相關文章

AD系列:Windows Server 2025 安裝AD CS角色和頒發證書

什么是 Active Directory 證書服務&#xff1f; Active Directory 證書服務 (AD CS) 是一個 Windows Server 角色&#xff0c;負責頒發和管理在安全通信和身份驗證協議中使用的公鑰基礎結構 (PKI) 證書。 頒發和管理證書 數字證書可用于對電子文檔和消息進行加密和數字簽名&…

kubernetes》》k8s》》Service 、Ingress 區別

K8S>>Service 資料 K8S >>Ingress 資料 Ingress VS Service 物理層數據鏈路層網絡層傳輸層會話層表示層應用層 Ingress是一種用于暴露HTTP和HTTPS路由的資源&#xff0c;它提供了七層&#xff08;應用層&#xff09;的負載均衡功能。Ingress可以根據主機名、…

【java WEB】恢復補充說明

Server 出現javax.servlet.http.HttpServlet", according to the project’s Dynamic Web Module facet version (3.0), was not found on the Java Build Path. 右鍵項目 > Properties > Project Facets。Dynamic Web Module facet version選4.0即可 還需要在serv…

VMware 創建虛擬機+簡易安裝Ubuntu的詳細操作步驟

VMware 創建虛擬機安裝Ubuntu的詳細操作步驟 一、創建虛擬機1.1 點擊創建新的虛擬機1.2 選擇自定義創建虛擬機1.3 選擇虛擬機的硬件兼容性1.4 安裝客戶機操作系統1.5 簡易安裝信息1.6 命名虛擬機名稱1.7 處理器配置1.8 虛擬機內核選擇1.9 網絡類型1.9 選擇I/O 控制器類型1.10 選…

GCC-C語言“自定義段”

一、起因 事情的起因是這樣的,在看別人代碼時,發現了一種很有意思的寫法,因為本人主要是以應用層開發為主,所以對這種寫法還是比較少見的,所以研究了一下,就牽扯出了一些知識點,這里先賣個關子,繼續往下看。 二、經過 發現了一串這樣的代碼 static void do_mac(mcmd_…

【信息系統項目管理師-論文真題】2021上半年論文詳解(包括解題思路和寫作要點)

更多內容請見: 備考信息系統項目管理師-專欄介紹和目錄 文章目錄 試題1:論信息系統項目的合同管理1、寫作要點2、解題思路項目合同管理的過程項目合同主要的條款內容試題2:論信息系統項目的范圍管理1、寫作要點2、解題思路項目范圍管理的過程核心范圍對應的需求跟蹤矩陣項目…

python2反編譯部分

文章目錄 1、所需環境2、確認打包工具&#xff08;沒成功&#xff09;3、 解包.exe文件&#xff08;以PyInstaller為例&#xff09; - useful【***總的來說這一步對我有用】4、定位關鍵文件 - useful5、 修復.pyc文件頭&#xff08;關鍵步驟&#xff01;&#xff09;- maybe-ig…

基于STM32的中點圓算法,畫空心圓的函數

中點圓算法(Midpoint Circle Algorithm)是一種高效繪制圓的算法&#xff0c;它利用圓的對稱性和整數運算來避免浮點計算&#xff0c;非常適合嵌入式系統使用。 空心圓繪制函數實現 /*** brief 使用中點圓算法繪制空心圓* param x0: 圓心x坐標* param y0: 圓心y坐標* param…

Android Kotlin 項目完整集成 Bugly 異常監控指南

Android Kotlin 項目集成 Bugly 異常監控完整指南 一、Bugly 簡介 Bugly 是騰訊提供的專業移動應用異常監控平臺&#xff0c;支持&#xff1a; 崩潰報告&#xff08;Java/Native&#xff09;錯誤分析性能監控熱更新功能&#xff08;需額外配置&#xff09; 二、集成步驟 1…

【電腦維修】MERCURY水星無線網卡導致 Windows 網絡適配器無法連接的一種情況

故障現象 Powershell 無法啟動&#xff0c; Terminal 無法啟動&#xff0c; CMD 無法啟動。 操作1 重新拔插 MERCURY 無線USB網卡&#xff0c;上述各種終端恢復相應。 分析 應該是MERCURY驅動故障導致卡死 操作2 磁盤出現 MERCURY 盤。里面是一個 MERCURY.exe 驅動安裝程…

Docker 打上 Tag 和 Push 的意思

在 Docker 中&#xff0c;打 Tag&#xff08;Tagging&#xff09; 和 Push&#xff08;Pushing&#xff09; 是兩個關鍵操作&#xff0c;用于管理鏡像的版本并上傳到鏡像倉庫&#xff08;如 Docker Hub、阿里云 ACR、Harbor 等&#xff09;。 1. 打 Tag&#xff08;Tagging&…

簡化excel校驗提高開發效率

業務背景&#xff1a;上傳excel文件進行基礎數據校驗&#xff0c;然而東西太多寫著寫著就...自然成了測試的KPI了 解決思路&#xff1a;使用現有的注解處理&#xff0c;原理使用validate注解原理 直接上干貨&#xff0c;一行代碼搞定校驗&#xff1a; ValidateUtils.validat…

基于Koa實現的服務端渲染 ?

前段時間剛寫完畢業論文&#xff0c;現在一上來就是“基于”&#xff0c;哈哈。&#x1f92f; 這篇文章持續更新&#xff0c;涉及到的技術棧是Koa、Vue和Vite &#xff08;用React手搓服務端渲染好麻煩&#xff09;。但是現在能上生產的服務端渲染估計是Next&#xff08;配合Re…

Linux運維——Vim基礎

Vim基礎 一、移動光標1.1、基礎移動1.2、屏幕滾動 二、編輯操作2.1、插入模式2.2、刪除與修改2.3、復制粘貼 三、搜索與替換3.1、搜索3.2、替換 4、分屏與窗口管理4.1、分屏操作4.2、窗口調整 五、宏與批量操作六、效率技巧七、操作符7.1、內置操作符7.2、操作符 文本對象&…

git操作合集

更新文件 在 Git 中更新已經上傳到倉庫的文件 1、檢查當前狀態 首先&#xff0c;打開終端或命令行工具&#xff0c;進入你的 Git 倉庫目錄&#xff08;即包含 .git 文件夾的目錄&#xff09;。運行以下命令來查看當前倉庫的狀態&#xff1a; git status 此命令會顯示哪些文…

【筆記】深度學習模型訓練的 GPU 內存優化之旅⑤:內存分配篇

開設此專題&#xff0c;目的一是梳理文獻&#xff0c;目的二是分享知識。因為筆者讀研期間的研究方向是單卡上的顯存優化&#xff0c;所以最初思考的專題名稱是“顯存突圍&#xff1a;深度學習模型訓練的 GPU 內存優化之旅”&#xff0c;英文縮寫是 “MLSys_GPU_Memory_Opt”。…

SQL Server 存儲過程開發手冊

SQL Server 存儲過程開發手冊&#xff08;更新版&#xff09; 根據要求&#xff0c;重新整理并加入了事務控制、異常日志記錄和返回狀態碼的設計。以下是詳細說明&#xff1a; 1. 總則 1.1 目標 本手冊旨在為 SQL Server 存儲過程的編寫提供一套完整的規范&#xff0c;確保系…

深海科技服務博客簡介

人人可學&#xff0c;人人可用&#xff0c;IT與AI不是高不可攀&#xff01; 博客宗旨 深海科技服務博客致力于&#xff1a; 推廣IT與AI的實際應用&#xff0c;降低入門門檻&#xff0c;讓更多個人和中小企業能夠以最少投入、高效實現信息化、智能化。 分享開源免費軟件、簡單…

本地大模型編程實戰(29)查詢圖數據庫NEO4J(2)

上一篇文章 用大語言模型LLM查詢圖數據庫NEO4J(1) 介紹了使用GraphQACypherChain查詢NEO4J。用它實現簡單快捷&#xff0c;但是不容易定制&#xff0c;在生產環境中可能會面臨挑戰。 本文將基于langgraph 框架&#xff0c;用LLM(大語言模型)查詢圖數據庫NEO4J。它可以定義清晰復…

RPG_5.角色動畫

1.創建一個動畫實例 2.創建該實例的c子類 3.繼續創建該類的子類&#xff0c;但是作用是用來鏈接&#xff08;以后會詳細解釋&#xff09; 4.基于PlayerAnimInstance類創建一個子類 5.目前一共創建了四個c類&#xff0c; 最基的類 角色的類 玩家控制的角色的類 玩家控制的角…