剑指 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 @   Garrett_Wale  阅读(80)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示