zoukankan      html  css  js  c++  java
  • 层次遍历二叉树

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

    Algorithm:

    定义函数 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; }
  • 相关阅读:
    laravel 安装及入门
    mysql事务处理的意义
    PHP项目:如何用PHP高并发检索数据库?
    inner join、left join、right join等的区别
    百度地图引入网页中
    google地图引入网页
    thinkphp的mvc理解
    SpringBoot+Shiro入门小栗子
    Springboot+WebSocket+Kafka(写着玩的)
    Windows下安装单机Kafka
  • 原文地址:https://www.cnblogs.com/xielei/p/10606758.html
Copyright © 2011-2022 走看看