力扣145 二叉树的后序遍历 Java版本

文章目录

  • 题目描述
  • 递归解法
    • 代码
  • 非递归解法
    • 思路
    • 代码


题目描述

给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。

示例 1:
在这里插入图片描述

输入:root = [1,null,2,3]
输出:[3,2,1]
示例 2:

输入:root = []
输出:[]
示例 3:

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

提示:

树中节点的数目在范围 [0, 100] 内
-100 <= Node.val <= 100

进阶:递归算法很简单,你可以通过迭代算法完成吗?

递归解法

代码

class Solution {//使用递归的方法public List<Integer> postorderTraversal(TreeNode root) {List<Integer> result = new ArrayList<>();postorder(root,result);return  result;}public void postorder(TreeNode root,List<Integer> result){//递归出口if(root==null){return;}if (root.left!=null){postorder(root.left,result);}if(root.right!=null){postorder(root.right,result);}result.add(root.val);}}

非递归解法

思路

在代码中详细注释了

代码

class Solution {//使用非递归的方法public List<Integer> postorderTraversal(TreeNode root) {List<Integer> result = new ArrayList<>();postorder(root,result);return  result;}//非递归方式的后续遍历也需要利用栈来实现//遍历的方式是:左->右->中。//要是单纯的按照这个顺序进行遍历的话是比较麻烦的,所以可以考虑利用前序遍历的方法改造然后再反转。//前序遍历:中->左->右。我们改造为:中->右->左。然后将结果反转,结果就变成了:左->右->中public void postorder(TreeNode root,List<Integer> result){if(root==null){return;}//用栈来保存节点Stack<TreeNode> stack = new Stack<>();stack.push(root);//当栈不空的时候从栈中弹出一个节点,然后遍历该节点,然后再将孩子节点入栈//注意这里要让左孩子先入栈,右孩子再入栈,这样就会先弹出右孩子,也就会按照我们上边改造的顺序遍历:中->右->左while (!stack.isEmpty()) {TreeNode node = stack.pop();result.add(node.val);if (node.left != null) {stack.push(node.left);}if (node.right != null) {stack.push(node.right);}}//反转遍历的结果Collections.reverse(result);}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/479691.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

性能测试、负载测试、压力测试、稳定性测试简单区分

是一个总称&#xff0c;可细分为性能测试、负载测试、压力测试、稳定性测试。 性能测试 以系统设计初期规划的性能指标为预期目标&#xff0c;对系统不断施加压力&#xff0c;验证系统在资源可接受范围内&#xff0c;是否能达到性能瓶颈。 关键词提取理解 有性能指标&#…

0成本部署github前端项目流程

0成本部署github纯前端项目流程 对业内来说应该是一个比较常规的操作&#xff0c;对于新手来说进行过一次应该就很难忘记了&#xff0c;但很多人仍然是不会的&#xff0c;认为部署项目很难&#xff0c;很专业&#xff0c;其实现在由于这些厂商的努力&#xff0c;大众&#xff…

羊奶的口味变化会影响质量吗?羊大师为你揭秘

羊奶的口味变化会影响质量吗&#xff1f;羊大师为你揭秘 改变羊奶的口味不一定会对其质量产生影响。尽管口味的改变可能会影响人们对羊奶的喜好程度&#xff0c;但这并不会使羊奶的营养价值降低。 小编羊大师提示&#xff0c;羊奶是一种富含营养的饮品&#xff0c;含有丰富的…

【已解决】PPT无法复制内容怎么办?

想要复制PPT文件里的内容&#xff0c;却发现复制不了&#xff0c;怎么办&#xff1f; 这种情况&#xff0c;一般是PPT文件被设置了以“只读方式”打开&#xff0c;“只读方式”下的PPT无法进行编辑更改&#xff0c;也无法进行复制粘贴的操作。 想要解决这个问题&#xff0c;我…

计算机设计大赛 深度学习YOLO安检管制物品识别与检测 - python opencv

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络4 Yolov55 模型训练6 实现效果7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习YOLO安检管制误判识别与检测 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&…

文献学习-1-Continuum Robots for Medical Interventions

Chapt 5. 连续体机构分析 5.1 文献学习 5.1.1 Continuum Robots for Medical Interventions Authors: PIERRE E. DUPONT , Fellow IEEE, NABIL SIMAAN , Fellow IEEE, HOWIE CHOSET , Fellow IEEE, AND CALEB RUCKER , Member IEEE 连续体机器人在医学上得到了广泛的应用&a…

python44-Python字典之字典入门

字典也是Python提供的一种常用的数据结构&#xff0c;它用于存放具有映射关系的数据。 比如&#xff1a; 有名字体重数据一一老师傅:79&#xff0c;老痞:80&#xff0c;亚特兰:92。 这组数据看上去像两个列表&#xff0c;但这两个列表的元素之间有一定的关联关系。如果单纯使…

【Simulink系列】——动态系统仿真 之 连续系统线性连续系统

声明&#xff1a;本系列博客参考有关专业书籍&#xff0c;截图均为自己实操&#xff0c;仅供交流学习&#xff01; 一、连续系统定义 连续系统输出在时间上连续变化&#xff0c;而非间隔采样取值&#xff0c;满足以下条件&#xff1a; ①输出连续变化&#xff0c;变化的间隔…

【算法】约瑟夫环问题解析与实现

一、导言 约瑟夫环&#xff08;Josephus Problem&#xff09;是一个经典的数学问题&#xff0c;涉及一个编号为 1 到 n 的人围成一圈&#xff0c;从第一个人开始报数&#xff0c;报到某个数字 m 的人出列&#xff0c;然后再从下一个人开始报数&#xff0c;如此循环&#xff0c…

数据分析案例-2023年TOP100国外电影数据可视化

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

SpringBoot+WebSocket实现即时通讯(四)

前言 紧接着上文《SpringBootWebSocket实现即时通讯&#xff08;三&#xff09;》 本博客姊妹篇 SpringBootWebSocket实现即时通讯&#xff08;一&#xff09;SpringBootWebSocket实现即时通讯&#xff08;二&#xff09;SpringBootWebSocket实现即时通讯&#xff08;三&…

AI时代教师如何修炼内功

AI时代教师如何修炼内功 How Teachers Can Cultivate Their Inner Strength in the Age of AI 在AI时代&#xff0c;教师的角色和职责正在经历前所未有的变革。随着人工智能技术的不断进步&#xff0c;教育领域出现了许多新的工具和方法&#xff0c;这些新发展要求教师提升自身…