Leetcode刷題營第二十九,三十題:二叉樹的中序以及后序遍歷

94.二叉樹的中序遍歷

給定一個二叉樹的根節點?root?,返回?它的?中序?遍歷?。

示例 1:

輸入:root = [1,null,2,3]
輸出:[1,3,2]

示例 2:

輸入:root = []
輸出:[]

示例 3:

輸入:root = [1]
輸出:[1]

提示:

  • 樹中節點數目在范圍?[0, 100]?內
  • -100 <= Node.val <= 100

進階:?遞歸算法很簡單,你可以通過迭代算法完成嗎?

思路:類似于我們之前講過的遞歸算法中序遍歷二叉樹:二叉樹的遍歷

? ? ? ? 這里我們需要返回的是數組,數組中的元素是按照中序遍歷的順序,同時返回數組的大小,也就意味著我們需要先計算二叉樹的大小,該方法我們在二叉樹的遍歷中同樣也實現了

代碼實現:

int TreeSize(struct TreeNode* root){if(!root){return 0;}return 1+TreeSize(root->left)+TreeSize(root->right);
}void Inorder(struct TreeNode* root,int*arr,int* index){if(!root){return;}Inorder(root->left,arr,index);arr[*index]=root->val;(*index)++;Inorder(root->right,arr,index);
}int* inorderTraversal(struct TreeNode* root, int* returnSize){if(!root){* returnSize = 0;return NULL;} int size = TreeSize(root);* returnSize = size;int* arr = (int*)malloc(sizeof(int)*size);int index = 0;Inorder(root,arr,&index);return arr;
}

145. 二叉樹的后序遍歷


145. 二叉樹的后序遍歷

給你一棵二叉樹的根節點?root?,返回其節點值的?后序遍歷?

示例 1:

輸入:root = [1,null,2,3]

輸出:[3,2,1]

解釋:

示例 2:

輸入:root = [1,2,3,4,5,null,8,null,null,6,7,9]

輸出:[4,6,7,5,2,9,8,3,1]

解釋:

示例 3:

輸入:root = []

輸出:[]

示例 4:

輸入:root = [1]

輸出:[1]

提示:

  • 樹中節點的數目在范圍?[0, 100]?內
  • -100 <= Node.val <= 100

算法思路:與我們的中序遍歷一樣:思路同樣參考二叉樹的遍歷

代碼實現如下:

int TreeSize(struct TreeNode* root){if(!root){return 0;}return 1+TreeSize(root->left)+TreeSize(root->right);
}void PostOrder(struct TreeNode* root,int*arr,int* index){if(!root){return;}PostOrder(root->left,arr,index);PostOrder(root->right,arr,index);arr[*index]=root->val;(*index)++;
}int* postorderTraversal(struct TreeNode* root, int* returnSize){if(!root){* returnSize = 0;return NULL;} int size = TreeSize(root);* returnSize = size;int* arr = (int*)malloc(sizeof(int)*size);int index = 0;PostOrder(root,arr,&index);return arr;
}

好了,本期關于二叉樹的遍歷就到這里結束了,相信大家對于二叉樹的遍歷已經十分得心應手了,這里遞歸的思想非常重要,但是對于那些比較大的樹,深樹,遞歸的方式往往容易棧溢出。我們會采取迭代加棧與隊列以及層序的方式來完成--這些內容會留到c++部分進行講解。謝謝大家的點贊和收藏!!

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

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

相關文章

Rabbitmq Direct Exchange(直連交換機)可以保證消費不被重復消費嗎,可以多個消費者,但是需要保證同一個消息,不會被投遞給多個消費者

在 RabbitMQ 中&#xff0c;默認情況下&#xff0c;不能保證消息不被重復消費&#xff0c;但可以通過 隊列綁定方式 消費者競爭機制 來確保 同一消息只被一個消費者處理。以下是幾種可行的方案&#xff1a;方案 1&#xff1a;單隊列 競爭消費者模式&#xff08;默認行為&…

常用的OTP語音芯片有哪些?

唯創知音在 OTP 語音芯片有著26年的歷史&#xff0c;有著豐富的技術積累與產品迭代歷程。1999 年&#xff0c;唯創知音在廣州成立&#xff0c;彼時便開始在電子領域積極探索。2000 年&#xff0c;公司敏銳捕捉到語音芯片行業的發展潛力&#xff0c;正式進軍該領域。經過數年技術…

分布式光伏發電系統中的“四可”指的是什么?

在分布式光伏電站規模爆發式增長的今天&#xff0c;“看不見、管不住、調不動”的難題卻成為行業痛點。如何讓散布各處的光伏電站真正成為穩定高效的“綠色能量站”&#xff1f;2025年《分布式光伏發電開發建設管理辦法》大型工商業項目&#xff08;≥6MW&#xff09;明確要求具…

健康管理系統新趨勢:AI + 物聯網如何重塑健康管理

一、傳統健康管理的痛點與變革之必然長久以來&#xff0c;我們熟悉的健康管理方式存在明顯局限&#xff1a;數據孤島嚴重&#xff1a;體檢報告在抽屜里沉睡&#xff0c;健身手環數據僅存于手機&#xff0c;不同醫療機構信息互不相通&#xff0c;個人健康信息猶如碎片散落各處。…

git基本操作【GIT-2】

git基本操作初始化一個倉庫&#xff08;repository&#xff09;、開始或停止跟蹤&#xff08;track&#xff09;文件、暫存&#xff08;stage&#xff09;或提交&#xff08;commit&#xff09;更改如何配置 Git 來忽略指定的文件和文件模式、如何迅速而簡單地撤銷錯誤操作、如…

【數據準備】——深度學習.全連接神經網絡

目錄 1 數據加載器 1.1 構建數據類 1.1.1 Dataset類 1.1.2 TensorDataset類 1.2 數據加載器 2 數據加載案例 2.1 加載csv數據集 2.2 加載圖片數據集 2.3 加載官方數據集 2.4 pytorch實現線性回歸 1 數據加載器 分數據集和加載器2個步驟~ 1.1 構建數據類 1.1.1 Dat…

健康生活,從細節開始

健康生活&#xff0c;從細節開始在當今快節奏的生活中&#xff0c;健康逐漸成為人們關注的焦點。擁有健康的身體&#xff0c;才能更好地享受生活、追求夢想。那么&#xff0c;如何才能擁有健康呢&#xff1f;這就需要我們從生活中的點滴細節入手&#xff0c;培養良好的生活習慣…

javax.servlet.http.HttpServletResponse;API導入報錯解決方案

javax.servlet.http.HttpServletResponse;API導入報錯解決方案與Postman上傳下載文件驗證 1. 主要錯誤&#xff1a;缺少 Servlet API 依賴 錯誤信息顯示 javax.servlet.http 包不存在。這是因為你的項目缺少 Servlet API 依賴。 解決方案&#xff1a; 如果你使用的是 Maven&…

reids依賴刪除,但springboot仍然需要redis參數才能啟動

背景&#xff1a;項目需要刪除redis。我刪除完項目所有配置redis的依賴&#xff0c;啟動報錯。[2025-07-17 15:08:37:561] [DEBUG] [restartedMain] DEBUG _.s.w.s.H.Mappings - [detectHandlerMethods,295] [] - o.s.b.a.w.s.e.BasicErrorController:{ [/error]}: error(HttpS…

【前端】CSS類命名規范指南

在 CSS 中&#xff0c;合理且規范的 class 命名格式對項目的可維護性和協作效率至關重要。以下是主流的 class 命名規范和方法論&#xff1a;一、核心命名原則語義化命名&#xff1a;描述功能而非樣式 ? .search-form&#xff08;描述功能&#xff09;? .red-text&#xff08…

C++網絡編程 4.UDP套接字(socket)編程示例程序

以下是基于UDP協議的完整客戶端和服務器代碼。UDP與TCP的核心區別在于無連接特性&#xff0c;因此代碼結構會更簡單&#xff08;無需監聽和接受連接&#xff09;。 UDP服務器代碼&#xff08;udp_server.cpp&#xff09; #include <iostream> #include <sys/socket.h&…

King’s LIMS:實驗室數字化轉型的智能高效之選

實驗室數字化轉型不僅是技術升級&#xff0c;更是管理理念和工作方式的革新。LIMS系統作為這一轉型的核心工具&#xff0c;能夠將分散的實驗數據轉化為可分析、可復用的資產&#xff0c;為科研決策提供支持&#xff1b;規范檢測流程&#xff0c;減少人為干預&#xff0c;確保結…

【力扣 中等 C】97. 交錯字符串

目錄 題目 解法一 題目 待添加 解法一 bool isInterleave(char* s1, char* s2, char* s3) {const int len1 strlen(s1);const int len2 strlen(s2);const int len3 strlen(s3);if (len1 len2 ! len3) {return false;}if (len1 < len2) {return isInterleave(s2, s1,…

Class9簡潔實現

Class9簡潔實現 %matplotlib inline import torch from torch import nn from d2l import torch as d2l# 初始化訓練樣本、測試樣本、樣本特征維度和批量大小 n_train,n_test,num_inputs,batch_size 20,100,200,5 # 設置真實權重和偏置 true_w,true_b torch.ones((num_inputs…

ELK日志分析,涉及logstash、elasticsearch、kibana等多方面應用,必看!

目錄 ELK日志分析 1、下載lrzsc 2、下載源包 3、解壓文件,下載elasticsearch、kibana、 logstash 4、配置elasticsearch 5、配種域名解析 6、配置kibana 7、配置logstash 8、進行測試 ELK日志分析 1、下載lrzsc [rootlocalhost ~]# hostnamectl set-hostname elk ##…

終極剖析HashMap:數據結構、哈希沖突與解決方案全解

文章目錄 引言 一、HashMap底層數據結構&#xff1a;三維存儲架構 1. 核心存儲層&#xff08;硬件優化設計&#xff09; 2. 內存布局對比 二、哈希沖突的本質與數學原理 1. 沖突產生的必然性 2. 沖突概率公式 三、哈希沖突解決方案全景圖 1. 鏈地址法&#xff08;Hash…

1.1.5 模塊與包——AI教你學Django

1.1.5 模塊與包&#xff08;Django 基礎學習細節&#xff09; 模塊和包是 Python 項目組織和代碼復用的基礎。Django 項目本質上就是由多個模塊和包組成。理解和靈活運用模塊與包機制&#xff0c;是寫好大型項目的關鍵。 一、import、from-import、as 的用法 1. import 用于導入…

UE5 相機后處理材質與動態參數修改

一、完整實現流程1. 創建后處理材質材質設置&#xff1a;在材質編輯器中&#xff0c;將材質域(Material Domain)設為后處理(Post Process)設置混合位置(Blendable Location)&#xff08;如After Tonemapping&#xff09;創建標量/向量參數&#xff08;如Intensity, ColorTint&a…

Django基礎(三)———模板

前言 在之前的文章中&#xff0c;視圖函數只是直接返回文本&#xff0c;而在實際生產環境中其實很少這樣用&#xff0c;因為實際的頁面大多是帶有樣式的HTML代碼&#xff0c;這可以讓瀏覽器渲染出非常漂亮的頁面。目前市面上有非常多的模板系統&#xff0c;其中最知名最好用的…

mysql6表清理跟回收空間

mysql6表清理跟回收空間 文章目錄mysql6表清理跟回收空間1.清理表2.備份表或者備份庫3.回收表空間4.查看5.驗證業務1.清理表 ## 登錄 C:\Program Files\MySQL\MySQL Server 5.6\bin>mysql -uroot -p Enter password: ****** Welcome to the MySQL monitor. Commands end w…