剑指Offer-32从上到下打印二叉树 III

public List<List<Integer>> levelOrder(TreeNode root) {
    Queue<TreeNode> queue = new LinkedList<>();
    List<List<Integer>> res = new ArrayList<>();
    if (root != null){
        queue.add(root);
    }
    while (!queue.isEmpty()){
        List<Integer> list = new ArrayList<>();
        for (int i = queue.size(); i > 0; i--){
            TreeNode t = queue.poll();
            list.add(t.val);
            if (t.left != null){
                queue.add(t.left);
            }
            if (t.right != null){
                queue.add(t.right);
            }
        }
        // 对比上一题 只需要判断是偶数层的把list反转就可以了
        if (res.size() % 2 == 1){
            Collections.reverse(list);
        }
        res.add(list);
    }
    return res;
}

猜你喜欢

转载自blog.csdn.net/a792396951/article/details/113844921