1. 题目

Leetcode#102. 二叉树的层次遍历

2. 方法一

2.1. 代码

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        vector<vector<int>> all_layer; 
        if(root==NULL) return all_layer;
        vector<int>  layer; 
        deque<pair<TreeNode*,int>> all_layer_stack;
        all_layer_stack.push_back(make_pair(root,0));
        
        int mark=0;
        
        while(!all_layer_stack.empty()){
            auto it=all_layer_stack.front();
            all_layer_stack.pop_front();
            if(it.first->left!=NULL)
                all_layer_stack.push_back(make_pair(it.first->left,it.second+1));
            if(it.first->right!=NULL)
                all_layer_stack.push_back(make_pair(it.first->right,it.second+1));
            if(mark!=it.second){
                mark++;
                all_layer.push_back(layer);
                layer.clear();
                layer.push_back(it.first->val);
            }
            else{
                layer.push_back(it.first->val);
            }
        }
        all_layer.push_back(layer);
        return all_layer;
    }
};

2.2. 结果

Leetcode#102. 二叉树的层次遍历

相关文章: