
Given the root of a binary tree, return the postorder traversal of its nodes’ values.
Example 1:
Input: root = [1,null,2,3] Output: [3,2,1] 
Follow up: Recursive solution is trivial, could you do it iteratively?
Example 2:
Input: root = [] Output: [] 
Example 3:
Input: root = [1] Output: [1] 
Example 4:
Input: root = [1,2] Output: [2,1] 
Example 5:
Input: root = [1,null,2] Output: [2,1] 
Constraints:
- The number of the nodes in the tree is in the range [0, 100].
 - -100 <= Node.val <= 100
 
Runtime: 76 ms, faster than 75.40% of JavaScript online submissions for Binary Tree Postorder Traversal.
Memory Usage: 38.9 MB, less than 28.13% of JavaScript online submissions for Binary Tree Postorder Traversal.
/*** 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) {const result = [];const stack = [];let node = root;while(node || stack.length > 0) {if (node) {stack.push(node);result.shift(node.val);node = node.right;} else {node = stack.pop();node = node.left;}}return result;};
