当前位置:网站首页>【leetcode】145.二叉树的后序遍历
【leetcode】145.二叉树的后序遍历
2022-04-22 10:27:00 【前端corner】
题目
给你一棵二叉树的根节点
root,返回其节点值的 后序遍历 。
示例 1:
输入:root = [1,null,2,3]
输出:[3,2,1]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
提示:
树中节点的数目在范围 [0, 100] 内
-100 <= Node.val <= 100
思路

- 递归写法
- 函数参数是当前二叉树节点和一个用于存放结果的数组
- 终止条件是节点为空
- 二叉树后序遍历的顺序是“左右中”,因此单层递归逻辑就是先递归左节点,再递归右节点,最后将中间节点的值存放进结果数组。
- 迭代写法
- 迭代写法可以先看看先序遍历的迭代写法【leetcode】144.二叉树的前序遍历,先序遍历的顺序是“中左右”,后续遍历的顺序是“左右中”,交换先序遍历中左节点和右节点的遍历顺序,变成"中右左",然后再反转结果数组即得到“左右中”。
- 代码只需要在前序遍历的基础上稍微更改。
代码

- 递归
/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } */
/** * @param {TreeNode} root * @return {number[]} */
var postorderTraversal = function(root) {
function traversal(node , ans){
if(!node) return
// 递归左节点
traversal(node.left , ans)
// 递归右节点
traversal(node.right , ans)
// 将中间节点的值存放进结果数组
ans.push(node.val)
}
let ans = []
traversal(root , ans)
return ans
};
- 迭代
/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } */
/** * @param {TreeNode} root * @return {number[]} */
var postorderTraversal = function(root) {
if(!root) return []
let stack = []
let ans = []
queue.push(root)
while(stack.length){
const node = stack.pop()
// 中间节点值加入结果数组
ans.push(node.val)
// 左节点先入栈
if(node.left) stack.push(node.left)
// 右节点后入栈
if(node.right) stack.push(node.right)
}
// 结果数组翻转后返回
return ans.reverse()
};
关注我的专栏,每天更新三道leetcode题解,一起变强!
版权声明
本文为[前端corner]所创,转载请带上原文链接,感谢
https://blog.csdn.net/laplacepoisson/article/details/124337335
边栏推荐
- (产品资源)明德扬AD8488模块高性能数字X射线FMC接口128模拟通道高速ADC芯片
- numpy库的基础知识介绍与基本使用
- MySQL进阶之表的增删改查
- 电脑清理C盘(系统盘)以及磁盘压缩(磁盘分区)、扩展(磁盘扩容)。
- Share some unknown and super easy-to-use API functions in sklearn module
- Challenges of enterprise web development
- 谷歌AdSense提示广告抓取工具错误,这可能导致收入减少怎么办
- Oracle account is locked. Unlocking method
- Laya Uncaught ReferenceError: spine is not defined
- The debug breakpoint of idea thread pool cannot jump in
猜你喜欢
随机推荐
【课程汇总】Hello HarmonyOS系列课程,手把手带你零基础入门
Introduction and basic use of numpy Library
企业级 Web 开发的挑战
Challenges of enterprise web development
numpy库的基础知识介绍与基本使用
formDate保存数据
Slime 2022 展望:把 Istio 的复杂性塞入智能的黑盒
*CTF 2022 Reverse Writeup
[required for design!] Common color matching table for Web Design
idea 线程池debug断点跳不进去
OneFlow学习笔记:从Functor到OpExprInterpreter
C语言实例100(四)
HAS2022 | 第19届华为全球分析师大会即将启幕!
How to implement acid at the bottom of MySQL?
分析API响应慢
golang time strings常用方法
SPA首屏加载优化
公有云降本增效最佳实践
A case of MySQL implicit conversion
一个简单的PLC运动控制项目










