LeetCode ---- 二叉树的中序遍历

给定一个二叉树,返回它的中序 遍历。

示例:

输入: [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;
    }
}

猜你喜欢

转载自blog.csdn.net/ydonghao2/article/details/80277291