什么是二叉树的后续遍历,简单来说就是“左右根”,展开来说就是优先访问根节点的左子树的全部节点,然后再访问根节点的右子树的全部节点,最后再访问根节点。对于每棵子树的访问也按照这个逻辑,因此叫做“左右根”的顺序。

从上述后序遍历的解释中我们不难发现,它存在递归的子问题:对每个子树的访问,可以看成对于上一级树的子问题。那我们可以用递归处理:

终止条件:当子问题到达叶子节点后,后一个不管左右都是空,因此遇到空节点就返回。
返回值:每次处理完子问题后,就是将子问题访问过的元素返回,依次存入了数组中。
本级任务:对于每个子问题,优先进入左子树的子问题,访问完了再进入右子树的子问题,最后回到父问题访问根节点。

因此处理的时候,过程就是:

step 1:准备数组用来记录遍历到的节点值,Java可以用List,C++可以直接用vector。
step 2:从根节点开始进入递归,遇到空节点就返回,否则优先进入左子树进行递归访问。
step 3:左子树访问完毕再进入根节点的右子树递归访问。
step 4:最后回到根节点,访问该节点。

import java.util.*;/** public class TreeNode {*   int val = 0;*   TreeNode left = null;*   TreeNode right = null;*   public TreeNode(int val) {*     this.val = val;*   }* }*/public class Solution {List<Integer> list = new ArrayList<>();/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param root TreeNode类 * @return int整型一维数组*/public int[] postorderTraversal (TreeNode root) {// write code hereList<Integer> listRes = preOrder(root);int[] res = new int[listRes.size()];for(int i = 0;i<listRes.size();i++){res[i] = listRes.get(i);}return res;}public List<Integer> preOrder(TreeNode root){if( root == null) return list;preOrder(root.left);preOrder(root.right);list.add(root.val);return list;} }

【算法刷题2】二叉树的后序遍历相关推荐

  1. leetcode刷题:二叉树的中序遍历

    题目: 分析: 代码如下: class Solution { public:vector<int> inorderTraversal(TreeNode* root) {stack<T ...

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

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

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

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

  4. 二叉树的后序遍历-python

    leetCode第145题 二叉树的后序遍历 链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal 给你一棵二叉树的根 ...

  5. 二叉树的后序遍历(C语言)

    首先我们从两个方面讲解二叉树的后序遍历(递归+迭代) 一.二叉树的后序遍历.(递归) 思想: 首先我们从二叉树的根节点开始先遍历其左孩子,①接着同样继续遍历其左孩子的左孩子,直到某个左孩子节点的左孩子 ...

  6. 二叉树的前序遍历,二叉树的中序遍历,二叉树的后序遍历,二叉树的层序遍历

    二叉树的前序遍历 144. 二叉树的前序遍历 - 力扣(LeetCode) (leetcode-cn.com) 给你二叉树的根节点 root ,返回它节点值的 前序 遍历. 示例 1: 输入:root ...

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

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

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

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

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

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

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

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

最新文章

  1. jdbctemplate oracle xml文件,Spring JDBCTemplate使用JNDI数据源
  2. Eclipse 的IOConsole Updater error
  3. gRPC学习记录(一)--概念性知识
  4. RabbitMQ学习之集群模式
  5. 理想的人才梯队体系特征:40页人才梯队建设实施方案,果断收藏
  6. 燃烧我的卡路里 ---- Flutter瘦内存瘦包之图片组件
  7. 网管学习日记-三层交换机
  8. w ndows10更新后变成32位了,三种直接从 Win7 升级到 Win10 的方法
  9. 数学建模学习(93):方差分析、T检验、卡方分析(检验)
  10. w ndows7错误恢复,Win7 0xc000000e启动错误恢复方法
  11. Mixed Precision Training混合精度训练笔记及框架代码
  12. 微信小程序如何做营销推广?
  13. linux环境开启kettle Carte
  14. 面向对象编程基本概念
  15. vscode 使用code runner配置c++11
  16. 淘宝天猫店招空白间隔去除
  17. 可微和可导的关系,全微分、偏微分、偏导数
  18. java around_Java逆向基础之AspectJ的Around方法修改方法体
  19. python爬取网易云歌单
  20. 科学的互联网思想 指引我国网络强国建设稳步前行

热门文章

  1. 盘点黑客与程序员的十大区别
  2. 测试工程师听了想打人
  3. thinkpad卡在logo界面_四大系列 一个品牌,超好用的商务伴侣Thinkpad
  4. excel教程自学网_想学习PS和视频剪辑,自学,有哪些好的学习网站和资源吗?
  5. Cytoscape可视化物种分类树结构
  6. thymeleaf select_SpringBoot整合thymeleaf简单的CRUD
  7. linux查看tcp连接状态_Linux使用lsof查看打开的文件和网络连接
  8. 第1课 编程是一门技术_动动脑 第1题
  9. 第94课 函数的参数 《小学生C++编程入门》 例94.1
  10. python报错:xml.parsers.expat.ExpatError: not well-formed (invalid token): line 3, column 1的解决办法