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;
            }
        
    };
    
  • 相关阅读:
    Node.js中流程控制
    设计模式六大原则(转)
    Python中装饰器(转)
    cocos2d-js反射
    With as
    Python中sort与sorted函数
    cocos+kbe问题记录
    Python字符串
    vue判断Object对象是否包含每个键
    vue跳转其他页面并传参
  • 原文地址:https://www.cnblogs.com/flix/p/12577503.html
Copyright © 2011-2022 走看看