从上往下打印二叉树(分层遍历)

  从上往下打印二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

  从上到下打印二叉树的规律:每一次打印一个节点的时候,如果该节点有子节点,则把该节点的子节点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的节点,重复前面的打印操作,直到队列中所有的节点都被打印出来为止。

  

struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
};

void LevelOrder(BinaryTreeNode* root) {
    if (root == NULL) return;

    queue<BinaryTreeNode*> q;

    q.push(root);

    while (!q.empty()) {
        BinaryTreeNode* p = q.front();
        q.pop();

        cout<<p->val<<" ";

        if (p->left)
            q.push(p->left);

        if (p->right)
            q.push(p->right);
    }
}

 

posted @ 2015-09-01 20:14  vincently  阅读(490)  评论(0编辑  收藏  举报