1. 题目描述
给定一个二叉树,返回它的后序遍历。
示例:
输入: [1,null,2,3]1\2/3
输出: [3,2,1]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
2. 实现思路
二叉树的后序遍历和前序遍历是一个相反的过程,所以基本思路和前序遍历类似。初始化一个栈和结果数组,将根节点放入栈中,当栈不为空时,重复下面的步骤:
(1)取出栈顶元素top,访问top
(2)将取出的栈顶元素top放入结果数组的最开始
(3)若top的左子节点不为空,将top的左子节点放入栈中
(4)若top的右子节点不为空,将top的右子节点放入栈中
3. 代码实现
/*** Definition for a binary tree node.* function TreeNode(val) {* this.val = val;* this.left = this.right = null;* }*//*** @param {TreeNode} root* @return {number[]}*/var postorderTraversal = function(root) {if(!root){return [];}var result = []var stack = [root]while(stack.length!==0){var top = stack.pop();result.unshift(top.val);if(top.left){stack.push(top.left);}if(top.right){stack.push(top.right);}}return result;};
4. 提交结果

