/* * @Description: 145. Binary Tree Postorder Traversal * @Author: libk * @Github: https://github.com/libk */ /** * 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) * } */ /** * @description: 迭代 * @param {TreeNode}root * @return {number[]} */ const postorderTraversal = function (root) { let stack = [] let res = [] let cur = root let flag = cur
while (cur || stack.length) { if (cur) { stack.push(cur) cur = cur.left } else { cur = stack[stack.length - 1] if (cur.right && cur.right !== flag) { cur = cur.right } else { cur = stack.pop() res.push(cur.val) flag = cur cur = null } } } return res }