给定一个二叉树,返回它的 **前序** 遍历。 **示例:** ```js 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] ``` **进阶:** 递归算法很简单,你可以通过迭代算法完成吗? 附赠leetcode地址:[leetcode](https://leetcode-cn.com/problems/binary-tree-preorder-traversal/solution/javascriptjie-qian-xu-bian-li-er-cha-shu-by-user77/)
Activity
7777sea commentedon May 11, 2020
plane-hjh commentedon May 11, 2020
前序遍历
先访问根节点,再访问左节点,最后访问右节点。主要是看非递归版本的实现
递归实现
非递归实现
sisterAn commentedon May 11, 2020
递归实现
迭代实现
利用栈来记录遍历的过程,实际上,递归就使用了调用栈,所以这里我们可以使用栈来模拟递归的过程
依次循环出栈遍历入栈,直到栈为空,遍历完成
复杂度分析:
空间复杂度:O(n)
时间复杂度:O(n)
leetcode
AnranS commentedon Nov 19, 2020
kangkang123269 commentedon Feb 23, 2023
非递归版