写点什么

LeetCode 题解:590. N 叉树的后序遍历,栈,JavaScript,详细注释

用户头像
Lee Chen
关注
发布于: 2020 年 10 月 16 日
LeetCode题解:590. N叉树的后序遍历,栈,JavaScript,详细注释

原题链接:https://leetcode-cn.com/problems/n-ary-tree-postorder-traversal/


解题思路:


  1. 后序遍历输出节点的顺序是从下到上,从左到右。

  2. 我们可以使用栈来进行遍历,每次循环入栈元素都为从上到下,从左到右。

  3. 那么每次循环时出栈元素的顺序都为从上到下,从右到左。

  4. 但此时的栈的元素输出顺序与需要的结果顺序正好相反。

  5. 解决方案就是将输出的结果插入到结果数组的头部,这样最终输出结果顺序就为从下到上,从左到右。


/**
* @param {Node} root
* @return {number[]}
*/
var postorder = function (root) {
let result = []; // 保存结果
let stack = []; // 使用栈遍历
root && stack.push(root); // 二叉树存在时才开始遍历
// 遍历二叉树,直到清空栈,即为遍历了所有节点
while (stack.length) {
// 从栈中弹出元素,顺序为从上到下,从右到左
const node = stack.pop();
// 将节点的值插入到结果数组的前端
// 保证了输出结果的顺序为从下到上,从左到右
result.unshift(node.val);
// 将子节点按照从左到右入栈,保证了出栈顺序
if (node.children) {
for (const child of node.children) {
stack.push(child);
}
}
}
return result;
};
复制代码


发布于: 2020 年 10 月 16 日阅读数: 36
用户头像

Lee Chen

关注

还未添加个人签名 2018.08.29 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode题解:590. N叉树的后序遍历,栈,JavaScript,详细注释