给定一个二叉树,返回它的中序 遍历。
示例:
输入: [1,null,2,3]
1
..\
.. 2
../
..3输出: [1,3,2]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
public class InorderTraversal {
@Test
public void inorderTraversalTest() {
TreeNode input = new TreeNode(1);
input.right = new TreeNode(2);
input.right.left = new TreeNode(3);
Assert.assertArrayEquals(new Integer[] {1,3,2}, inorderTraversal(input).toArray());
}
public List<Integer> inorderTraversal(TreeNode root) {
Stack<TreeNode> stack = new Stack<>();
List<Integer> res = new ArrayList<>();
while (root != null || stack.size() > 0) {
while (root != null) {
stack.push(root);
root = root.left;
}
root = stack.pop();
res.add(root.val);
root = root.right;
}
return res;
}
}