94. 二叉树的中序遍历
给定一个二叉树的根节点 root
,返回 它的 中序 遍历 。
示例 1:
1 | 输入:root = [1,null,2,3] |
示例 2:
1 | 输入:root = [] |
示例 3:
1 | 输入:root = [1] |
提示:
- 树中节点数目在范围
[0, 100]
内 -100 <= Node.val <= 100
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
题解:
递归写法:
原理同前序
1 | public List<Integer> inorderTraversal(TreeNode root) { |
迭代写法:
前序遍历的顺序是根左右,先访问的是根节点,要处理的也是根节点,处理顺序和访问顺序是一致的。
但是中序遍历的顺序是左根右,一层一层向下访问,直到到达树的最底部然后再开始处理节点,处理顺序和访问顺序是不一致的。
所以需要借助指针来帮助访问节点,借助栈来帮助处理节点。
1 | public List<Integer> inorderTraversal(TreeNode root) { |