给定一个二叉树,返回它的 后序 遍历。

示例:

输入: [1,null,2,3]  1\2/3 输出: [3,2,1]

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

方法一:递归法

/*** 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> postorderTraversal(TreeNode* root) {vector<int> res;if(root==nullptr){return res;}core(root,res);return res;}void core(TreeNode* root,vector<int>& res){if(root==nullptr)return;core(root->left,res);core(root->right,res);res.push_back(root->val);}
};

方法二:迭代法

/*** 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> postorderTraversal(TreeNode* root) {vector<int> res;if(root==nullptr){return res;}stack<TreeNode*> vec;vec.push(root);while(!vec.empty()){TreeNode* top = vec.top();vec.pop();if(top->left!=nullptr)vec.push(top->left);if(top->right!=nullptr)vec.push(top->right);res.push_back(top->val);}reverse(res.begin(),res.end());return res;}
};

二叉树的后序遍历—leetcode145相关推荐

  1. LeetCode-145:二叉树的后序遍历

    题目描述: 给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [1,null,2,3]      1     \      2     /    3 输出: [3,2,1] 思路分析: 递归法: ...

  2. 刻意练习:LeetCode实战 -- 二叉树的后序遍历

    背景 今天,第二期基础算法(Leetcode)刻意练习训练营 的打卡任务是二叉树的中序遍历,由于二叉树的遍历方式通常来说有四种:前序遍历.中序遍历.后序遍历以及层次遍历,而LeetCode也有二叉树的 ...

  3. [LeetCode] Binary Tree Postorder Traversal 二叉树的后序遍历

    Given a binary tree, return the postorder traversal of its nodes' values. For example: Given binary ...

  4. 二叉树后序遍历_LeetCode算法145. 二叉树的后序遍历

    leetcode LeetCode算法-145. 二叉树的后序遍历 145. 二叉树的后序遍历 题目 给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / ...

  5. 【7-10 PAT】树的遍历(给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。)

    题干: 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 解题报告: dfs求出这棵树来,然后bfs求层序遍历就行了. AC代码: #include&l ...

  6. PTA L2-006 树的遍历-二叉树的后序遍历+中序遍历,输出层序遍历 团体程序设计天梯赛-练习集...

    L2-006 树的遍历 (25 分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤),是二叉树中结点的个 ...

  7. Leetcode: 二叉树的后序遍历

    Leetcode: 二叉树的后序遍历 后遍历的流程:一直往下走,把路口记下来,假如路口有馒头,我们是不吃的,因为要先吃最后的,中间的岔路如果有岔路,就把右边的岔路记下来,但是因为右边没有走过,所以访问 ...

  8. 二叉树的后序遍历(递归和非递归)

    二叉树的后序遍历 后序遍历(LRD)是二叉树遍历的一种,也叫做后根遍历.后序周游,记为左右根,简记:左右根. 步骤(非递归): ⼆叉树的后序遍历顺序是左-右-根.在这里仍然采用棧来进行辅助,具体步骤如 ...

  9. 详解二叉树的后序遍历

    后序遍历:首先遍历左子树,然后遍历右子树,最后访问根节点(左->右->根) 后序遍历的递归算法 思路: 遍历左子树 遍历右子树 访问根节点 代码如下: //二叉树的后序遍历(递归) voi ...

最新文章

  1. 如何做一个听话的 “输入框”
  2. nginx反向代理相关 负载均衡及优化
  3. css flexbox模型_Flexbox和CSS Grid之间的主要区别
  4. 了解.Net Remoting从基础开始
  5. java for(o t :object) 获取顺序号_JAVA泛型通配符T,E,K,V区别 瞬间豁然开朗
  6. 小米12 Ultra将搭载5倍潜望镜头:自研技术加持 成像相对更好
  7. vsftpd增加用户 linux,linux下开通vsftpd 添加新ftp用户
  8. IO流之流的操作规律
  9. PS破解版全网下架?这款国产工具可完美替代
  10. VmPlayer上设置主机和windows虚拟机文件夹共享
  11. 世界500强面试题 - 头脑
  12. C语言阿拉伯数字转大写汉字,将阿拉伯数字转大写汉字程序的类
  13. OC 如何读取plist文件
  14. python如何手动编写开根号的算法_手动开根号方法
  15. java网课|Scanner
  16. SQL高级——PLSQL数据库编程
  17. [转载] 晓说——第5期:张学良观虎斗旧电报还原军阀“宫心计”
  18. Tuxera ntfs读写插件工具v2022版本 支持macOS15系统
  19. [BZOJ1787][Ahoi2008]Meet 紧急集合
  20. shell脚本练习2023年下岗版

热门文章

  1. Java黑皮书课后题第2章:*2.20(金融应用:计算利息)编写程序,读取余额和年利率百分比,打印下个月的利息
  2. c语言学习之用筛选法求100之内的素数。
  3. mysql报196271错误_微软补丁造成MYSQL及Windows经常连接失败解决方法
  4. Python第三方模块tesserocr安装
  5. 结对编程Wordcount
  6. jQuery选择器大全(48个代码片段+21幅图演示)
  7. (FFOS Gaia) Telemetry - AUM分析
  8. Inna and Binary Logic
  9. SQL求解两个时间差
  10. 关于 【通过代理访问】 的研究,【突破 IP ,“无限制”投票】