题目描述
给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
 例如:
 给定的二叉树是{3,9,20,#,#,15,7},
该二叉树层序遍历的结果是
 [
 [3],
 [9,20],
 [15,7]
 ]
代码:
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */
class Solution {
   
public:
    /** * * @param root TreeNode类 * @return int整型vector<vector<>> */
    vector<vector<int> > levelOrder(TreeNode* root) {
   
        // write code here
        vector<vector<int>>vec;
        if(root==NULL)return vec;
        queue<TreeNode*>q;
        queue<int>lev;
        q.push(root);
        lev.push(0);
        TreeNode*p;
        int top=0;
        while(!q.empty()){
   
            p=q.front();
            top=lev.front();
            q.pop();
            lev.pop();
             
            if(vec.size()<top+1){
   
                vector<int>vt;
                vec.push_back(vt);
            }
            
            vec[top].push_back(p->val);
            if(p->left!=NULL)q.push(p->left),lev.push(top+1);
            if(p->right!=NULL)q.push(p->right),lev.push(top+1);
        }
        return vec;
    }
};

 京公网安备 11010502036488号
京公网安备 11010502036488号