二叉树中序遍历-非递归方法
给定一个二叉树的根节点root,返回它的中序遍历结果。
数据范围:树上节点数满足 0 \le n \le 10000≤n≤1000,树上每个节点的值满足 0 \le val \le 10000≤val≤1000
进阶:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)
进阶:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)
示例1
输入:
{1,2,#,#,3}
![](https://img2022.cnblogs.com/blog/1481760/202205/1481760-20220510213834688-1458327131.png)
返回值:
[2,3,1]
- 递归方法简单但是耗内存且容易超过递归次数,使用栈来非递归的实现遍历。
# class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param root TreeNode类 # @return int整型一维数组 # class Solution: def inorderTraversal(self , root: TreeNode) -> List[int]: res = [] stack = [] while root or stack: while root: stack.append(root) root = root.left root = stack.pop() res.append(root.val) root = root.right return res
如此简洁优雅的代码必须记录下!