【剑指Offer题解:java】从上往下打印二叉树

题目

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

分析

  1. 初始化:一个队列Queue queue , 将root节点入队列queue
  2. 如果队列不空,做如下操作:
  3. 弹出队列头,保存为node,将node的左右非空子节点加入队列
  4. 做2,3步骤,直到队列为空

【剑指Offer题解:java】从上往下打印二叉树_第1张图片

【剑指Offer题解:java】从上往下打印二叉树_第2张图片

【剑指Offer题解:java】从上往下打印二叉树_第3张图片

代码

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

public class Solution {
     
    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
     
        ArrayList<Integer> list = new ArrayList<>();
        if(root == null) return list;
        //使用队列来辅助
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        while (!queue.isEmpty()){
     
            TreeNode node = queue.poll();
            list.add(node.val);
            if(node.left!=null) queue.offer(node.left);
            if(node.right!=null) queue.offer(node.right);
        }
        return list;
    }
}

你可能感兴趣的:(#,剑指Offer题解,算法,二叉树,队列,queue)