【算法刷题2】二叉树的后序遍历
什么是二叉树的后续遍历,简单来说就是“左右根”,展开来说就是优先访问根节点的左子树的全部节点,然后再访问根节点的右子树的全部节点,最后再访问根节点。对于每棵子树的访问也按照这个逻辑,因此叫做“左右根”的顺序。
从上述后序遍历的解释中我们不难发现,它存在递归的子问题:对每个子树的访问,可以看成对于上一级树的子问题。那我们可以用递归处理:
终止条件:当子问题到达叶子节点后,后一个不管左右都是空,因此遇到空节点就返回。
返回值:每次处理完子问题后,就是将子问题访问过的元素返回,依次存入了数组中。
本级任务:对于每个子问题,优先进入左子树的子问题,访问完了再进入右子树的子问题,最后回到父问题访问根节点。
因此处理的时候,过程就是:
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】二叉树的后序遍历相关推荐
- leetcode刷题:二叉树的中序遍历
题目: 分析: 代码如下: class Solution { public:vector<int> inorderTraversal(TreeNode* root) {stack<T ...
- 二叉树后序遍历_LeetCode算法145. 二叉树的后序遍历
leetcode LeetCode算法-145. 二叉树的后序遍历 145. 二叉树的后序遍历 题目 给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / ...
- 刻意练习:LeetCode实战 -- 二叉树的后序遍历
背景 今天,第二期基础算法(Leetcode)刻意练习训练营 的打卡任务是二叉树的中序遍历,由于二叉树的遍历方式通常来说有四种:前序遍历.中序遍历.后序遍历以及层次遍历,而LeetCode也有二叉树的 ...
- 二叉树的后序遍历-python
leetCode第145题 二叉树的后序遍历 链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal 给你一棵二叉树的根 ...
- 二叉树的后序遍历(C语言)
首先我们从两个方面讲解二叉树的后序遍历(递归+迭代) 一.二叉树的后序遍历.(递归) 思想: 首先我们从二叉树的根节点开始先遍历其左孩子,①接着同样继续遍历其左孩子的左孩子,直到某个左孩子节点的左孩子 ...
- 二叉树的前序遍历,二叉树的中序遍历,二叉树的后序遍历,二叉树的层序遍历
二叉树的前序遍历 144. 二叉树的前序遍历 - 力扣(LeetCode) (leetcode-cn.com) 给你二叉树的根节点 root ,返回它节点值的 前序 遍历. 示例 1: 输入:root ...
- [LeetCode] Binary Tree Postorder Traversal 二叉树的后序遍历
Given a binary tree, return the postorder traversal of its nodes' values. For example: Given binary ...
- 【7-10 PAT】树的遍历(给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。)
题干: 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 解题报告: dfs求出这棵树来,然后bfs求层序遍历就行了. AC代码: #include&l ...
- LeetCode-145:二叉树的后序遍历
题目描述: 给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 思路分析: 递归法: ...
- PTA L2-006 树的遍历-二叉树的后序遍历+中序遍历,输出层序遍历 团体程序设计天梯赛-练习集...
L2-006 树的遍历 (25 分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤),是二叉树中结点的个 ...
最新文章
- jdbctemplate oracle xml文件,Spring JDBCTemplate使用JNDI数据源
- Eclipse 的IOConsole Updater error
- gRPC学习记录(一)--概念性知识
- RabbitMQ学习之集群模式
- 理想的人才梯队体系特征:40页人才梯队建设实施方案,果断收藏
- 燃烧我的卡路里 ---- Flutter瘦内存瘦包之图片组件
- 网管学习日记-三层交换机
- w ndows10更新后变成32位了,三种直接从 Win7 升级到 Win10 的方法
- 数学建模学习(93):方差分析、T检验、卡方分析(检验)
- w ndows7错误恢复,Win7 0xc000000e启动错误恢复方法
- Mixed Precision Training混合精度训练笔记及框架代码
- 微信小程序如何做营销推广?
- linux环境开启kettle Carte
- 面向对象编程基本概念
- vscode 使用code runner配置c++11
- 淘宝天猫店招空白间隔去除
- 可微和可导的关系,全微分、偏微分、偏导数
- java around_Java逆向基础之AspectJ的Around方法修改方法体
- python爬取网易云歌单
- 科学的互联网思想 指引我国网络强国建设稳步前行
热门文章
- 盘点黑客与程序员的十大区别
- 测试工程师听了想打人
- thinkpad卡在logo界面_四大系列 一个品牌,超好用的商务伴侣Thinkpad
- excel教程自学网_想学习PS和视频剪辑,自学,有哪些好的学习网站和资源吗?
- Cytoscape可视化物种分类树结构
- thymeleaf select_SpringBoot整合thymeleaf简单的CRUD
- linux查看tcp连接状态_Linux使用lsof查看打开的文件和网络连接
- 第1课 编程是一门技术_动动脑 第1题
- 第94课 函数的参数 《小学生C++编程入门》 例94.1
- python报错:xml.parsers.expat.ExpatError: not well-formed (invalid token): line 3, column 1的解决办法