【LeetCode 102】Binary Tree Level Order Traversal

Meaning of the questions:

Traversal of a binary tree in layers. Each layer line.

Ideas:

bfs. To print each time a node, it first child node which is added to the queue.
Count represents the current layer and the next layer of nodes and the remainder of the current number of nodes with two numbers.
Done that. Or not.

Code:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        if (root == NULL) return {};
        queue<TreeNode*> que;
        que.push(root);
        int curcnt = 1;
        int nxtcnt = 0;
        vector<vector<int>> ans;
        vector<int> temp;
        
        while(!que.empty()) {
            TreeNode* cur = que.front();
            que.pop();
            temp.push_back(cur->val);
            
            if (cur->left) {
                que.push(cur->left);
                nxtcnt++;
            }
            if (cur->right) {
                que.push(cur->right);
                nxtcnt++;
            }
            curcnt--;
            if (curcnt == 0) {
                ans.push_back(temp);
                temp.clear();
                curcnt = nxtcnt;
                nxtcnt = 0;
            }
        }
        return ans;
    }
};

Guess you like

Origin blog.csdn.net/iCode_girl/article/details/91821066