天天看点

#yyds干货盘点# 解决剑指offer:从上往下打印二叉树

1.简述:

描述

不分行从上往下打印出二叉树的每个节点,同层节点从左至右打印。例如输入{8,6,10,#,#,2,1},如以下图中的示例二叉树,则依次打印8,6,10,2,1(空节点不打印,跳过),请你将打印的结果存放到一个数组里面,返回。

#yyds干货盘点# 解决剑指offer:从上往下打印二叉树

数据范围:

0<=节点总数<=1000

-1000<=节点值<=1000

示例1

输入:

{8,6,10,#,#,2,1}      

返回值:

[8,6,10,2,1]      

示例2

输入:

{5,4,#,3,#,2,#,1}      
[5,4,3,2,1]      
import java.util.*;
public class Solution {
    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
        ArrayList<Integer> res = new ArrayList();
        if(root == null)
            //如果是空,则直接返回空数组
            return res; 
        //队列存储,进行层次遍历
        Queue<TreeNode> q = new ArrayDeque<TreeNode>(); 
        q.offer(root);
        while(!q.isEmpty()){
            TreeNode cur = q.poll();
            res.add(cur.val);
            //若是左右孩子存在,则存入左右孩子作为下一个层次
            if(cur.left != null)
                q.add(cur.left);
            if(cur.right != null)
                q.add(cur.right);
        }
        return res;
    }
}