题解 | #求二叉树的层序遍历#

求二叉树的层序遍历

https://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3

//c++  利用双队列的方法,队列具有先进先出的特性,所以每一层从左到右进行遍历,将下一层放入另一个队列。
/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */

#include <cstddef>
#include <queue>
#include <vector>
class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @return int整型vector<vector<>>
     */
    
    vector<vector<int> > levelOrder(TreeNode* root) {
        // write code here
        vector<vector<int>> res;
        if (root==NULL) {
            return res;
        }
        queue<TreeNode*> q1;
        queue<TreeNode*> q2;
        q1.push(root);
        while (!q1.empty() || !q2.empty()) {
            vector<int> row;
            while (!q1.empty()) {
                TreeNode* node=q1.front();
                q1.pop();
                row.push_back(node->val);
                if (node->left) {
                    q2.push(node->left);
                
                }
                if (node->right) {
                    q2.push(node->right);
                
                }
            
            }
            if (row.size()) {
                res.push_back(row);
            }
            row.clear();
            while (!q2.empty()) {
                TreeNode* node=q2.front();
                q2.pop();
                row.push_back(node->val);
                if (node->left) {
                    q1.push(node->left);
                
                }
                if (node->right) {
                    q1.push(node->right);
                
                }
            
            }
            if (row.size()) {
                res.push_back(row);
            }
            row.clear();
        
        }
        return res;

        



    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
04-30 18:05
空屿编号:你把墨镜摘下来是不是这样😭
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务