zoukankan      html  css  js  c++  java
  • 60、剑指offer--把二叉树打印成多行

    题目描述
    从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
     
    解题思路:可以直到,每次打印一个结点,然后打印下一行时总是先打印其左子结点,然后打印其右子结点。先入先出,使用队列处理。使用toBeprint记录当前行打印的个数,每存入一个-1;nextlevel记录下一行打印结点个数;一行打印完,toBeprint = nextlevel;nextlevel = 0;
     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 */
    11 class Solution {
    12 public:
    13         vector<vector<int> > Print(TreeNode* pRoot) {
    14             vector<vector<int> > result;
    15             vector<int> temp;//间接变量,存储一行
    16             if(pRoot == NULL)
    17                 return result;
    18             queue<TreeNode *> nodes;
    19             nodes.push(pRoot);
    20             int nextlevel = 0;//下一行应打印个数
    21             int toBePrint = 1;//当前行剩余打印个数
    22             while(!nodes.empty())
    23             {
    24                 TreeNode *pNode = nodes.front();
    25                 temp.push_back(pNode->val);
    26                 if(pNode->left != NULL)
    27                 {
    28                     nodes.push(pNode->left);
    29                     ++nextlevel;
    30                 }
    31                 if(pNode->right != NULL)
    32                 {
    33                     nodes.push(pNode->right);
    34                     ++nextlevel;
    35                 }
    36                 nodes.pop();
    37                 --toBePrint;
    38                 if(toBePrint == 0)//一行已打印完
    39                 {
    40                     result.push_back(temp);
    41                     temp.clear();//清空
    42                     toBePrint = nextlevel;
    43                     nextlevel = 0;
    44                 }
    45             }
    46             return result;
    47         }
    48 };
  • 相关阅读:
    freebsd安装mysql
    freebsd安装ports
    分布式拒绝服务攻击
    如何用命令获知当前是一年中的第多少周和今天是周几
    freebsd软件包下载地址
    mod_wsgi的两种模式
    freebsd中/etc/rc.conf配置文件导致不能启动的问题
    进程ID[PID(Process ID)]与端口号[(Port ID)]的联系
    Java EE之HttpServletRequest
    Chrome之控制台使用【转载】
  • 原文地址:https://www.cnblogs.com/qqky/p/7115314.html
Copyright © 2011-2022 走看看