leetcode 算法题590 (简单150) N叉树的后序遍历
- 题目介绍
给定一个 N 叉树,返回其节点值的后序遍历。
例如,给定一个 3叉树 :
返回其后序遍历: [5,6,3,2,4,1].
- 说明
递归法很简单,你可以使用迭代法完成此题吗?
- 解法一
/**
* // Definition for a Node.
* function Node(val,children) {
* this.val = val;
* this.children = children;
* };
*/
/**
* @param {Node} root
* @return {number[]}
*/
var postorder = function(root) {
let temp = [];
add2Array(root, temp);
return temp;
};
const add2Array = (node, temp) => {
if(!node) {
return;
}
if(node.children) {
node.children.forEach(child => {
add2Array(child, temp);
})
}
temp.push(node.val);
}
执行用时 : 932 ms, 在所有 JavaScript 提交中击败了73.68%的用户
内存消耗 : 83.6 MB, 在所有 JavaScript 提交中击败了25.61%的用户
- 解法二
/**
* // Definition for a Node.
* function Node(val,children) {
* this.val = val;
* this.children = children;
* };
*/
/**
* @param {Node} root
* @return {number[]}
*/
var postorder = function(root) {
if(!root) {
return [];
}
let temp = [], nodes = [root];
while(nodes.length) {
let node = nodes.pop();
temp.unshift(node.val);
if(node.children) {
nodes.push(...node.children);
}
}
return temp;
};
执行用时 : 828 ms, 在所有 JavaScript 提交中击败了98.95%的用户
内存消耗 : 81.5 MB, 在所有 JavaScript 提交中击败了30.49%的用户