145. Binary Tree Postorder Traversal
Leetcode
https://leetcode.com/problems/binary-tree-postorder-traversal/
題目
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]Example 2:
Input: root = []
Output: []Example 3:
Input: root = [1]
Output: [1]解答
方法一
Recursion
var postorderTraversal = function(root) {
if(root === null) return [];
const result = [];
const postorder = (node) => {
if (node.left) postorder(node.left);
if (node.right) postorder(node.right);
result.push(node.val);
};
postorder(root);
return result;
};Runtime: 92 ms, faster than 45.15% of JavaScript online submissions for Binary Tree Postorder Traversal.
Memory Usage: 42.3 MB, less than 30.59% of JavaScript online submissions for Binary Tree Postorder Traversal.
方法二
Iteration
var postorderTraversal = function(root) {
if(root === null) return [];
const result = [];
const stack = [root];
while(stack.length) {
const node = stack.pop();
result.push(node.val);
// 左邊先放入 stack 的,最後會是排序在前面的
// postorder left -> right -> root
// 這裡的 stack 反向放 root -> right -> left
if (node.left) stack.push(node.left);
if (node.right) stack.push(node.right);
}
// 倒轉過來
return result.reverse();
};Runtime: 106 ms, faster than 25.24% of JavaScript online submissions for Binary Tree Postorder Traversal.
Memory Usage: 42.1 MB, less than 38.09% of JavaScript online submissions for Binary Tree Postorder Traversal.
參考資料
https://jstechroad.com/algorithms/leetcode-145-binary-tree-postorder-traversal-javascript/
Last updated
Was this helpful?