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

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

前言

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

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

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

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

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

总结

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

目录
相关文章
|
3月前
|
存储 算法
二叉树进阶-学会层序遍历助你一次刷完leetcode10道题
文章深入探讨了二叉树的层序遍历方法,并展示了如何通过队列实现层序遍历的算法逻辑,同时指出掌握层序遍历技巧可以帮助解决LeetCode上的多道相关题目。
二叉树进阶-学会层序遍历助你一次刷完leetcode10道题
|
6月前
|
Java
JAVA数据结构刷题 -- 二叉树进阶
JAVA数据结构刷题 -- 二叉树进阶
44 0
|
6月前
|
C++ 容器
『 C++ 』二叉树进阶OJ题(上)
『 C++ 』二叉树进阶OJ题(上)
『 C++ 』二叉树进阶OJ题(上)
|
6月前
|
C++ 容器
『 C++ 』二叉树进阶OJ题(中)
『 C++ 』二叉树进阶OJ题(中)
|
6月前
|
存储 C++ 容器
『 C++ 』二叉树进阶OJ题(下)
『 C++ 』二叉树进阶OJ题(下)
|
6月前
|
存储 算法
二叉树进阶OJ题
二叉树进阶OJ题
39 0
|
6月前
|
算法
刷题专栏(十):二叉树的前序遍历
刷题专栏(十):二叉树的前序遍历
54 0
|
6月前
|
算法
刷题专栏(十三):二叉搜索树的最近公共祖先
刷题专栏(十三):二叉搜索树的最近公共祖先
42 0
|
6月前
|
算法
刷题专栏(十二):翻转二叉树
刷题专栏(十二):翻转二叉树
65 0
|
6月前
|
算法
刷题专栏(六):二叉树的最大深度
刷题专栏(六):二叉树的最大深度
55 0