二叉树层次遍历

#include <iostream>
#include <queue>

using namespace std;

struct TreeNode
{
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode ( int x ) : val(x), left(nullptr), right(nullptr) {}
};

void BFS_print(TreeNode* root)
{
    queue< TreeNode* > Q;
    Q.push( root );

    while ( !Q.empty() )
    {
        // 处理队列首部元素
        TreeNode* node = Q.front();
        cout << node->val << endl;

        // 处理完首部元素后,将其弹出
        Q.pop();
        if ( node->left )
            Q.push( node->left );
        if ( node->right )
            Q.push( node->right );
    }
}

int main()
{
    TreeNode a(1);
    TreeNode b(2);
    TreeNode c(5);
    TreeNode d(3);
    TreeNode e(4);
    TreeNode f(6);

    a.left = &b;
    a.right = &c;
    b.left = &d;
    b.right = &e;
    c.right = &f;

    BFS_print(&a);

    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。