剑指 Offer 32 - I. 从上到下打印二叉树 + 层次遍历二叉树

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

Offer_32_1

题目描述

解题思路

  1. 这题属于简单题,考察的是我们对二叉树以及层次遍历的方法。
  2. 这里只需要使用简单的队列即可完成二叉树的层次遍历。
  3. 此外,由于这道题需要返回一个定长数组,但是我一时没有找到合适的将Integer转换为int的方法,所以使用遍历list的方式取出原来的元素放在数组中。
package com.walegarrett.offer;

/**
 * @Author WaleGarrett
 * @Date 2021/2/1 14:50
 */

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

/**
 * 题目:从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
 *  解析:使用队列按照层次打印层次遍历序列
 */
public class Offer_32_1 {
    public int[] levelOrder(TreeNode root) {
        if(root == null)
            return new int[0];
        int[] result;
        List<Integer> array = new ArrayList<Integer>();

        Queue<TreeNode> que = new LinkedList<>();
        que.add(root);

        while(!que.isEmpty()){
            TreeNode temp = que.peek();
            que.poll();
            array.add(temp.val);
            if(temp.left != null)
                que.offer(temp.left);
            if(temp.right != null)
                que.offer(temp.right);
        }
        int size = array.size();
        result = new int[size];
        int index = 0;
        for(int ele : array){
            result[index++] = ele;
        }
        return result;
    }
}

posted @ 2021-02-01 15:22  Garrett_Wale  阅读(78)  评论(0编辑  收藏  举报