LeetCode笔记:二叉树的后序遍历

问题

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

示例:

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

// 二叉树
   1
    \
     2
    /
   3

输出: [3,2,1]

进阶:  递归算法很简单,你可以通过迭代算法完成吗?

解法

思路:

递归分别访问二叉树的左子树、右子树、根节点,存储在数组中。

代码:

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[]}
 */
var postorderTraversal = function (root) {
  // 特殊情况
  if (root == null) return [];

  // 递归,以此访问左子树,右子树,根节点,并将节点值存储在数组中
  function postOrder(node, result = []) {
    if (node != null) {
      postOrder(node.left, result);
      postOrder(node.right, result);
      result.push(node.val);
    }
  }
  // 新建用于存放结果的数组,开始递归遍历整个二叉树
  const result = [];
  postOrder(root, result);
  return result;
};

参考

评论