• 【剑指offer】不分行从上到下打印二叉树,C++实现(层序遍历)


    原创文章,转载请注明出处!

    本题牛客网地址

    博客文章索引地址

    博客文章中代码的github地址

    1.题目

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

    image

    图  不分行从上往下按层打印二叉树的顺序为8-6-10-5-7-9-11

    2.思路

          本题使用队列做为辅助容器,利用队列的先进先出策略,按层打印二叉树。举例:首先,将根节点压入队列;然后,先将队首元素放入存储遍历结果的vector中,再判断队首节点是否有左右子节点,如果有左右子节点,则将做右子节点压入队列,队首元素弹出队首,循环执行直至队列为空。最后,将存储遍历结果的vector返回。

    image

    3.代码

      1 /*
      2 struct TreeNode {
      3     int val;
      4     struct TreeNode *left;
      5     struct TreeNode *right;
      6     TreeNode(int x) :
      7             val(x), left(NULL), right(NULL) {
      8     }
      9 };*/
     10 class Solution {
     11 public:
     12     vector<int> PrintFromTopToBottom(TreeNode* root) {
     13 
     14         // 存储结果
     15         vector<int>  result;
     16 
     17         // 边界条件
     18         if(root == NULL)
     19             return result;
     20 
     21         // 辅助容器:双端队列(存储指向二叉树节点的指针)
     22         queue<TreeNode*> q;
     23 
     24         // 辅助指针:指向队列弹出的指针
     25         TreeNode* fr;
     26 
     27         // 根节点入队列
     28         q.push(root);
     29 
     30         // 遍历队列
     31         while(!q.empty())
     32         {
     33             // 
     34             fr=q.front();
     35             result.push_back(fr->val);
     36             if(fr->left != NULL)
     37                 q.push(fr->left);
     38             if(fr->right != NULL)
     39                 q.push(fr->right);
     40             q.pop();
     41         }
     42 
     43        return result;
     44     }
     45 };
  • 相关阅读:
    MySQL 正则表达式
    spark 应用场景2-身高统计
    spark 应用场景1-求年龄平均值
    spark jdk8 单词统计示例
    spark 常用函数介绍(python)
    Spark如何读写hive
    sparkJavaApi逐个详解
    Spark基础与Java Api介绍
    Spark函数详解系列之RDD基本转换
    Spark中使用Java编程的常用方法
  • 原文地址:https://www.cnblogs.com/wanglei5205/p/8630642.html
Copyright © 2020-2023  润新知