zoukankan      html  css  js  c++  java
  • 【剑指Offer】面试题32

    题目

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

    例如:
    给定二叉树: [3,9,20,null,null,15,7],

        3
       / 
      9  20
        /  
       15   7
    

    返回其层次遍历结果:

    [
      [3],  
      [9,20],  
      [15,7]
    ]
    ``` 
    
    提示:
    节点总数 <= 1000
    
    ## 思路
    在[【面试题32 - I. 从上到下打印二叉树】](https://www.cnblogs.com/galaxy-hao/p/12369503.html)基础上先计算当前层元素个数,然后依次遍历当前层每个元素,并将其下层节点放入队列中。
    
    ### 代码
    时间复杂度:O(n)
    空间复杂度:O(n)
    ```cpp
    class Solution {
    public:
        vector<vector<int>> levelOrder(TreeNode* root) {
            vector<vector<int>> res;
            if (root) {
                queue<TreeNode*> que;
                que.push(root);
                while (!que.empty()) {
                    int size = que.size(); //计算一层元素个数
                    vector<int> tmp;
                    while (size--) {
                        TreeNode *node = que.front();
                        que.pop();
                        tmp.push_back(node->val);
                        if (node->left) que.push(node->left);
                        if (node->right) que.push(node->right);
                    }
                    res.push_back(tmp);
                }
            }
            return res;
        }
    };
    
  • 相关阅读:
    12. nc/netcat 用法举例
    7. 由一道ctf学习变量覆盖漏洞
    11. 几点基于Web日志的Webshell检测思路
    约瑟夫环
    栈结构的经典算法题
    二叉查找树之二
    fork与vfork
    数组常见算法题
    赛马问题
    fibonacci 数列及其应用
  • 原文地址:https://www.cnblogs.com/galaxy-hao/p/12369542.html
Copyright © 2011-2022 走看看