
# 018 二叉树的中序遍历## 题目描述给定一个二叉树的根节点 root 返回 它的 中序 遍历 。示例 1- 输入root [1,null,2,3]- 输出[1,3,2]示例 2- 输入root []- 输出[]示例 3- 输入root [1]- 输出[1]提示- 树中节点数目在范围 [0, 100] 内- -100 Node.val 100## 解题思路迭代法借助栈和指针先遍历树的左节点然后弹出栈加入中间值最后将指针指向树的右节点继续循环遍历左节点。## 代码实现/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val val; * this.left left; * this.right right; * } * } */ class Solution { public ListInteger inorderTraversal(TreeNode root) { ListInteger a new ArrayList(); StackTreeNode Stack new Stack(); TreeNode curr root; while (curr ! null || !Stack.isEmpty()) { while (curr ! null) { Stack.push(curr); curr curr.left; } curr Stack.pop(); a.add(curr.val); curr curr.right; } return a; } }