题目描述
给定一个二叉树,返回它的 后序 遍历。
示例:
输入: [1,null,2,3]
1 | 1 |
输出: [3,2,1]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
解法一、递归
1 | const postorderTraversal = function (root) { |
解法二、非递归(迭代)
技巧是使用两个栈,一个数据栈,一个状态栈。将“遍历左子树”,“遍历右子树”和“访问根节点”三个步骤分别用状态码表示,枚举状态转移过程,使用有限状态自动机(FSM,Finite State Machine)的模型来模拟递归过程.数据栈用来存放当前遍历的节点,状态栈用来存放要访问哪个方向(0左,1右,2根)
1 | const postorderTraversal = function (root) { |