层次遍历二叉树

例如,上面这棵二叉树层次遍历结果为:1 2 3 4 5node

Algorithm:ios

定义函数 levelorder(tree) 为层次遍历二叉树 tree
1) 建立一个空队列 q
2) temp_node = root // 从根节点开始遍历
3) 只要 temp_node 不为 NULL,则执行以下循环
    a) 打印 temp_node->data.
    b) 将 temp_node 的子节点入队(以先左子节点后右子节点顺序)q
    c) 出队一个节点并将其赋值给temp_node

 #include <iostream> #include <queue> 
using namespace std; // 二叉树节点
struct Node { int data; struct Node *left, *right; }; 
void printLevelOrder(Node *root) { 
    if (root == NULL)  return; // 建立一个空队列 
    queue<Node *> q; 
 q.push(root); while (q.empty() == false) { // 遍历当前节点
        Node *node = q.front(); cout << node->data << " "; q.pop(); // 左子节点入队
        if (node->left != NULL) q.push(node->left); // 右子节点入队
        if (node->right != NULL) q.push(node->right); } } /*
* 辅助函数
* 用给定的值建立一个二叉树节点,起左右子节点均为空
*/
Node* newNode(int data) { Node *temp = new Node; temp->data = data; temp->left = temp->right = NULL; return temp; } int main() { Node *root = newNode(1); root->left = newNode(2); root->right = newNode(3); root->left->left = newNode(4); root->left->right = newNode(5); cout << "Level Order traversal of binary tree is \n"; printLevelOrder(root); return 0; }