zoukankan      html  css  js  c++  java
  • 【剑指Offer-举例让抽象问题具体化】面试题32.1:分层从上到下打印二叉树

    题目描述

    从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

    思路

    在层次遍历的基础上,定义两个变量:curLevelNodesNum表示当前层的节点数量,nextLevelNodesNum表示下一层的节点数量。当向队列中插入节点时,nextLevelNodesNum++,当弹出节点时,curLevelNodesSum--。如果curLevelNodesSum为0,说明当前层以及打印完毕。代码如下:

    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };
    */
    class Solution {
    public:
            vector<vector<int> > Print(TreeNode* pRoot) {
                vector<vector<int>> ans;
                if(pRoot==nullptr)
                    return ans;
                
                int nextLevelNodesNum = 0;    //下一层的节点个数
                int curLevelNodesNum = 1;    //当前层的节点个数
                queue<TreeNode*> q;
                vector<int> curLevelNodes;
                q.push(pRoot);
                while(!q.empty()){
                    TreeNode* curNode = q.front();
                    curLevelNodes.push_back(curNode->val);
                    if(curNode->left!=nullptr){
                        q.push(curNode->left);
                        nextLevelNodesNum++;
                    }
                    if(curNode->right!=nullptr){
                        q.push(curNode->right);
                        nextLevelNodesNum++;
                    }
                    q.pop();
                    curLevelNodesNum--;
                    if(curLevelNodesNum==0){
                        ans.push_back(curLevelNodes);
                        curLevelNodes.clear();
                        curLevelNodesNum = nextLevelNodesNum;
                        nextLevelNodesNum = 0;
                    }
                }
                return ans;
            }
        
    };
    
  • 相关阅读:
    Codeforces Round #603 (Div. 2)
    【bzoj1997】[Hnoi2010]Planar(平面图+2-sat)
    【poj3207】Ikki's Story IV
    【HDU1814】Peaceful Commission(2-sat+暴力染色)
    Educational Codeforces Round 77 (Rated for Div. 2)
    【hdu3311】Dig The Wells(斯坦纳树+dp)
    [USACO3.3] A Game
    [TJOI2013] 单词
    [USACO3.3] Home on the Range
    [NOI2011] 阿狸的打字机
  • 原文地址:https://www.cnblogs.com/flix/p/12577503.html
Copyright © 2011-2022 走看看