美文网首页
《剑指offer第二版》面试题32 题目二:分行从上到下打印二叉

《剑指offer第二版》面试题32 题目二:分行从上到下打印二叉

作者: castlet | 来源:发表于2020-04-12 12:26 被阅读0次

题目描述

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。

解题思路:

  1. 定义一个辅助队列queue
  2. 先将根节点入队。
  3. 得到当前队列的大小n,则n就为当前层的节点数量。
  4. 把队列的n个节点依次出队,并打印出相应节点。每个出队的时候,就将出队的节点的左右节点分别入队。
  5. n个节点出队后,则该层遍历完成,打印换行符。

代码

void printFormTopToBottom1(TreeNode root){
     if (root == null) {
         return;
     }
     Queue<TreeNode> queue = new LinkedList<>();
     queue.offer(root); // 根节点入队
     while (!queue.isEmpty()) {
         // 打印当前一层的节点
         int size = queue.size();
         for (int i = 0; i < size; i++) {
             // 从队里里拿出一个节点的时候,将这个节点的左右子树分别入队。
             TreeNode tmp = queue.poll();
             if (tmp.left != null) {
                 queue.offer(tmp.left);
             }
             if (tmp.right != null) {
                 queue.offer(tmp.right);
             }
             System.out.print(tmp.value);
         }
         System.out.println(); // 换行
     }
 }

相关文章

网友评论

      本文标题:《剑指offer第二版》面试题32 题目二:分行从上到下打印二叉

      本文链接:https://www.haomeiwen.com/subject/ovuvmhtx.html