leetcodedsa-templates07-trees21-breadth-first-searchC
#include <iostream>
#include <queue>
 
using std::cout;
using std::endl;
using std::queue;
 
class TreeNode {
    public:
        int val_;
        TreeNode* left = nullptr;
        TreeNode* right = nullptr;
 
        TreeNode(int val) {
            val_ = val;
        }
};
 
void bfs(TreeNode* root) {
    queue<TreeNode*> queue;
 
    if (root) {
        queue.push(root);
    }
    
    int level = 0;
    while (queue.size() > 0) {
        cout << "level: " << level << endl;
        int length = queue.size();
        for (int i = 0; i < length; i++) {
            TreeNode* curr = queue.front();
            queue.pop();
            cout << curr->val_ << ' ';
            if (curr->left) {
                queue.push(curr->left);
            }
            if (curr->right) {
                queue.push(curr->right);
            }
        }
        level++;
        cout << endl;
    }
}```