145. 二叉树的后序遍历【34】
难度等级:容易
上一篇算法:
102. 二叉树的层序遍历【206】
力扣此题地址:
145. 二叉树的后序遍历 - 力扣(Leetcode)
1.题目:145. 二叉树的后序遍历
给你二叉树的根节点 root
,返回它节点值的 后序 遍历。
2.解题思路:
后序遍历:左节点-->右节点-->根节点
后序遍历方法的代码实现:
1.先判断树是否为null
2.后序遍历就先对左子树、右子树依次分别递归调用,再将根节点添加到list中
二叉树概念及基本功能实现
3.代码实现:
/* Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
//后序遍历:左节点-->右节点-->根节点
class Solution {public List<Integer> postorderTraversal(TreeNode root) {//先创建一个list作为返回List<Integer> res = new ArrayList<Integer>();//调用后序遍历方法postorder(root,res);//返回链表return res;}public void preorder(TreeNode root, List<Integer> res) {//判断是否为null,也是递归的终止条件if (root == null) {return;}//后序遍历思路就是:先分别对左子树、右子树递归,最后打印或添加根节点postorder(root.left, res);postorder(root.right, res);res.add(root.val);}
}
注:由上面代码规律可以看出,除了根节点是直接打印其值之外,左节点、右节点都是通过递归遍历的方式遍历到。如:
前序遍历:添加根节点--->递归遍历左节点--->递归遍历右节点
中序遍历:递归遍历左节点--->添加根节点--->递归遍历右节点
后序遍历:递归遍历左节点--->递归遍历右节点--->添加根节点