面试题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阅读 206评论 0 0
  • 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入图4.5中的二叉树,则依次打印出...
    Felicia1993阅读 243评论 0 0
  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,479评论 1 31
  • 四、树与二叉树 1. 二叉树的顺序存储结构 二叉树的顺序存储就是用数组存储二叉树。二叉树的每个结点在顺序存储中都有...
    MinoyJet阅读 1,576评论 0 7
  • 什么是二叉树? 引用自百度百科:在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(...
    AnICoo1阅读 1,390评论 0 1