刷题专栏(十一):二叉树的后序遍历

简介: 刷题专栏(十一):二叉树的后序遍历

前言

今天接着来学习二叉树的相关题目,现在的我对于二叉树的简单类型的题目简直就是信手捏来。

今天的这道题目,和上一篇刷题专栏中的题目特别类似,那就是《二叉树的后续遍历》。

比起前序排序,这道题就差不多了,只不过是要转换一下思维。

接下来,我们就一起来看看吧。

image.png

算法题:二叉树的后序遍历

首先,因为和昨天的那道题太像了,我就选择不那么啰嗦了。

处理二叉树的方式,通常就是递归、迭代遍历。

如果要一个个的获取二叉树上每一个节点上面的值。

那我觉得递归是最容易理解的,而迭代是性能最好的。

这里大家可以都去试一下。

再者如何来拿到后序遍历的数值呢。

其实我们还是要正序遍历的,只不过存储值的时候要先存子节点,再存当前节点。

不知道有没有理解,下面来看一下代码。

代码展示

下面就是本次执行的代码了,采用就是二叉树递归的方式。

/**
 * 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<Integer> resultList = new ArrayList<Integer>();
        digui(root, resultList);
        return resultList;
    }
    public void digui(TreeNode root, List<Integer> resultList) {
        if (root == null) {
            return;
        }
        digui(root.left, resultList);
        digui(root.right, resultList);
        resultList.add(root.val);
    }
}

代码执行结果

本次的代码执行结果,只能算是部分成功,耗费的内存名次太差了也;这简直就是火葬场。

image.png

总结

今天这道题和昨天的那道题简直太像了,只不过是存放顺序有些不一样而已,所以大家如果在做这道题的时候,也可以去昨天那篇文章。

目录
打赏
0
相关文章
leetcode654最大二叉树刷题打卡
leetcode654最大二叉树刷题打卡
70 0
【刷题】双指针进阶
请看入门篇 :双指针入门
46 0
【刷题】双指针进阶
|
9月前
|
JAVA数据结构刷题 -- 力扣二叉树
JAVA数据结构刷题 -- 力扣二叉树
70 0
|
9月前
|
刷题专栏(十三):二叉搜索树的最近公共祖先
刷题专栏(十三):二叉搜索树的最近公共祖先
49 0
|
9月前
|
刷题专栏(十):二叉树的前序遍历
刷题专栏(十):二叉树的前序遍历
65 0
|
9月前
|
刷题专栏(六):二叉树的最大深度
刷题专栏(六):二叉树的最大深度
68 0
|
9月前
|
刷题专栏(八):平衡二叉树
刷题专栏(八):平衡二叉树
61 0
|
9月前
|
刷题专栏(十二):翻转二叉树
刷题专栏(十二):翻转二叉树
77 0
牛客网《剑指offer》专栏刷题练习之二叉树合集
牛客网《剑指offer》专栏刷题练习之二叉树合集
100 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等