面试题23:从上往下打印二叉树

题目描述

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

代码实现

import java.util.ArrayList;
import java.util.Queue;
import java.util.LinkedList;
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
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 treeNode = queue.poll();
            list.add(treeNode.val);
            if(treeNode.left != null)
                queue.offer(treeNode.left);
            if(treeNode.right != null)
                queue.offer(treeNode.right);
        }
        
        return list;
    }
}

主要思路

1、从上到下按层打印二叉树,实际上考查的就是二叉树的广度优先遍历,用一个队列和一个 list 就可以实现(队列用来暂存遍历过程中得到的结点;list 是一个容器,用来装载每次从队列头部取出来的结点,也就是你要打印的内容)
2、主要思路:每次从队列头部取出一个结点之后,就把这个结点放入 list 中,然后如果该结点有子结点,就把该结点的子结点放到队列的末尾。只要队列不为空,说明未打印完所有结点,则继续从队列头部取出结点,重复上述操作,直到队列为空。

推荐阅读更多精彩内容

  • 题目:本质上就是二叉树的层次遍历(其余的典型遍历方式还有先根遍历、中根遍历、后根遍历) 解法:类似于图的广度优先搜...
    qmss阅读 126评论 0 0
  • 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入图4.5中的二叉树,则依次打印出...
    Felicia1993阅读 118评论 0 0
  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,073评论 1 30
  • 四、树与二叉树 1. 二叉树的顺序存储结构 二叉树的顺序存储就是用数组存储二叉树。二叉树的每个结点在顺序存储中都有...
    MinoyJet阅读 1,193评论 0 7
  • 什么是二叉树? 引用自百度百科:在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(...
    AnICoo1阅读 1,035评论 0 1
  • 人间四月天 草长莺飞春意盎然 你说蝴蝶注定眷恋花朵的芬芳 就像你 永远离不开我 离不开我给的味道 我信了 信了你给...
    爱上一叶浮萍阅读 165评论 0 2
  • 前言 我想,小程序其实不必多说。网上有很多小程序和方向的分析文章,昨天晚上我也在思考小程序的第一波红利将会是哪些方...
    游泳的石头阅读 7,071评论 5 36
  • 这本书以小说的形式,讲述了一个穷困潦倒的普通公司职员,遭遇女友分手,公司职位变动,且有可能会被公司解雇的情况下,经...
    明媚Sopy阅读 257评论 8 8
  • 如果说步行是人类最好的运动方式,那么快走就是最适宜女性减肥的一项运动。 所谓快走,是我们努力的尽量快的步行,每个人...
    王大大来了吖阅读 3,739评论 0 7