leetcode刷题-145二叉树的后序遍历

107 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

leetcode145-二叉树的后序遍历

前文

本文为菜鸟的刷题记录,仅用作笔记使用,并非最佳解决方案。

题目信息

给定一个二叉树,返回它的 后序 遍历。

输入: [1,null,2,3]  
   1
    \
     2
    /
   3 

输出: [3,2,1]

解题思路分析

解法1

要解决题目要求的二叉树后序遍历的需求,首先我们需要分析一下什么是二叉树的后序遍历。后序遍历,如同字面意思所言,也就是二叉树的中间节点最后进行遍历。所以后序遍历意味着遍历的顺序为二叉树的左节点、二叉树的右节点、二叉树的当前节点。而由于二叉树的左右节点,均为各自子树的根节点,又可以认为是子二叉树。遍历时子二叉树同样需要遵循相同的方式进行遍历,也就是后序遍历。因此可以看出,后序的每个节点都需要同样的递归操作。因此实际操作中,我们需要先将左节点放入递归,再将右节点放入递归,最后将当前节点放入目标数组中。以此类推直至整个二叉树遍历完毕,也就得到了目标二叉树的后序遍历结果。 代码如下:

List<Integer> result = new ArrayList<>();
public List<Integer> postorderTraversal(TreeNode root) {
    if(root != null){
        postorderTraversal(root.left);
        postorderTraversal(root.right);
        result.add(root.val);
    }
    return result;
}

复杂度分析

  • 时间复杂度 o(n)
  • 空间复杂度 o(n)

后记

  • 千古兴亡多少事?悠悠。不尽长江滚滚流。