返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >c++实现版本层次遍历功能
  • 781
分享到

c++实现版本层次遍历功能

2024-04-02 19:04:59 781人浏览 独家记忆
摘要

采用队列实现,BFS,功能:BFS层次遍历打印、按照节点将BFS序列化成一个字符。 #include <iOStream> #include <string&g

采用队列实现,BFS,功能:BFS层次遍历打印、按照节点将BFS序列化成一个字符。


#include <iOStream>
#include <string>
#include <queue>
using namespace std;
struct Treenode
{
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(int val) : val(val), left(nullptr), right(nullptr) {}
};

//迭代打印层次遍历
void BFSTraverse(TreeNode* root)
{
    queue<TreeNode*> nodeQueue;
    nodeQueue.push(root);//先把第一个先放到列表里面
    while (!nodeQueue.empty())
    {
        int sz = nodeQueue.size();//这个是为了一层一层的数值进行处理
        for (int i = 0; i < sz; i++)
        {
            //那就取出那个节点进行处理
            TreeNode* node = nodeQueue.front();
            cout << node->val << ", ";
            nodeQueue.pop();
            if (node->left)
            {
                nodeQueue.push(node->left);
            }
            if (node->right)
            {
                nodeQueue.push(node->right);
            }
        }
    }
}


//按照节点进行序列化成一个字符串
string serialByBFS(TreeNode* root)
{
    if (root == nullptr)
        return "#!";
    queue<TreeNode*> nodeQueue;
    nodeQueue.push(root);
    string res;
    while (!nodeQueue.empty())
    {
        int sz = nodeQueue.size();
        for (int i = 0; i < sz; i++)
        {
            TreeNode* node = nodeQueue.front();
            nodeQueue.pop();
            if (node)
            {
                res = res + std::to_string(node->val) + '!';
                nodeQueue.push(node->left);
                nodeQueue.push(node->right);
            }
            else
            {
                res = res + "#!";
            }
        }
    }
    return res;
}


int main3()
{
    TreeNode* head = new TreeNode(5);
    head->left = new TreeNode(3);
    head->right = new TreeNode(8);
    head->left->left = new TreeNode(1);
    head->left->right = new TreeNode(2);
    head->right->left = new TreeNode(4);
    head->right->right = new TreeNode(5);
    head->right->left->left = new TreeNode(6);
    head->right->right->left = new TreeNode(9);
    head->right->right->right = new TreeNode(11);

    cout << "traverse1:";
    BFSTraverse(head);
    cout << "\nserial binary:";
    string res = serialByBFS(head);
    cout << res << endl;

    return 0;
}

ps:下面看下c++层次遍历



#include <iostream>
#include <queue>

using namespace std;

struct node
{
    int item;
    node *l, *r;
    node(int n)
    {
        item=n;
        l=0;
        r=0;
    }
};
typedef node *link;


void traverse(link h, void visit(link))
{
    queue<link> q;
    q.push(h);
    while(!q.empty())
    {
        h = q.front();
        q.pop();
        visit(h);
        if(h->l != 0) q.push(h->l);
        if(h->r !=0) q.push(h->r);
    }
}

void visit(link p)
{
    cout << p->item <<  " ";
}

int main()
{
    link root = new node(4);
    root->l = new node(5);
    root->r = new node(6);
    root->l->l = new node(7);
    root->l->r = new node(8);

    cout << "中文";
    traverse(root, visit);

    return 0;
}

到此这篇关于c++实现版本层次遍历功能的文章就介绍到这了,更多相关c++层次遍历内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: c++实现版本层次遍历功能

本文链接: https://www.lsjlt.com/news/131998.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • c++实现版本层次遍历功能
    采用队列实现,BFS,功能:BFS层次遍历打印、按照节点将BFS序列化成一个字符。 #include <iostream> #include <string&g...
    99+
    2024-04-02
  • c++如何实现版本层次遍历功能
    这篇文章将为大家详细讲解有关c++如何实现版本层次遍历功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。采用队列实现,BFS,功能:BFS层次遍历打印、按照节点将BFS序列化成一个字符。#include&...
    99+
    2023-06-20
  • C语言实现二叉树层次遍历介绍
    目录什么是层次遍历?那我们如何来实现这个算法呢?主体代码:总结什么是层次遍历? 对于一颗二叉树来说,从根节点开始,按从上到下、从左到右的顺序访问每一个结点。 注:每一个结点有且访问一...
    99+
    2024-04-02
  • java怎么实现二叉树的层次遍历
    这篇文章主要介绍“java怎么实现二叉树的层次遍历”,在日常操作中,相信很多人在java怎么实现二叉树的层次遍历问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java怎么实现二叉树的层次遍历”的疑惑有所帮助!...
    99+
    2023-06-19
  • Oracle 数据库层级遍历查询功能的实现
    目录1. 树形结构存储表1.1 初始化测试数据1.1.1 写入数据1.1.2 树形结构如下图2. 树形结构遍历查询2.1 从父节点遍历2.3 start with 条件 connect by prior 条件1. 树形结...
    99+
    2022-07-08
    Oracle层级遍历查询 Oracle层级查询
  • Oracle 数据库层级遍历查询功能的实现
    目录1. 树形结构存储表1.1 初始化测试数据1.1.1 写入数据1.1.2 树形结构如下图2. 树形结构遍历查询2.1 从父节点遍历2.3 start with 条件 connec...
    99+
    2024-04-02
  • 用C++实现二叉树层序遍历
    这篇文章主要讲解了“用C++实现二叉树层序遍历”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“用C++实现二叉树层序遍历”吧!二叉树层序遍历从底部层序遍历其实还是从顶部开始遍历,只不过最后存储...
    99+
    2023-06-20
  • C++实现LeetCode(102.二叉树层序遍历)
    [LeetCode] 102. Binary Tree Level Order Traversal 二叉树层序遍历 Given a binary tree, return the&#...
    99+
    2024-04-02
  • C++怎么实现二叉树层序遍历
    本篇内容主要讲解“C++怎么实现二叉树层序遍历”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么实现二叉树层序遍历”吧!二叉树层序遍历Given a binary tree, return...
    99+
    2023-06-20
  • C++实现二叉树层序遍历的方法
    今天小编给大家分享一下C++实现二叉树层序遍历的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。二叉树层序遍历Given ...
    99+
    2023-06-19
  • C++实现LeetCode(107.二叉树层序遍历之二)
    [LeetCode] 107. Binary Tree Level Order Traversal II 二叉树层序遍历之二 Given the root of ...
    99+
    2024-04-02
  • JavaScript实现二叉树层序遍历
    目录题目描述示例递归实现代码思路解析图示队列实现代码思路解析题目描述 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例 二叉树:[3...
    99+
    2023-05-14
    JavaScript二叉树遍历 JS遍历 二叉树层序遍历 JS二叉树
  • 用C++实现二叉树的之字形层序遍历
    这篇文章主要介绍“用C++实现二叉树的之字形层序遍历”,在日常操作中,相信很多人在用C++实现二叉树的之字形层序遍历问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”用C++实现二叉树的之字形层序遍历”的疑惑有所...
    99+
    2023-06-20
  • C++怎么实现二叉树的字形层序遍历
    今天小编给大家分享一下C++怎么实现二叉树的字形层序遍历的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。二叉树的之字形层序遍历...
    99+
    2023-06-19
  • C++二叉树层序遍历实例分析
    今天小编给大家分享一下C++二叉树层序遍历实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。二叉树层序遍历Example...
    99+
    2023-06-19
  • springboot配合Thymeleaf完美实现遍历功能
    一. 什么是Thymeleaf Thymeleaf是面向Web和独立环境的现代服务器端Java模板引擎。 Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 - 可...
    99+
    2024-04-02
  • C++实现LeetCode(103.二叉树的之字形层序遍历)
    [LeetCode] 103. Binary Tree Zigzag Level Order Traversal 二叉树的之字形层序遍历 Given a binary tree, r...
    99+
    2024-04-02
  • 如何利用HashMap实现一个遍历功能
    这篇文章给大家介绍如何利用HashMap实现一个遍历功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。map的几种遍历方式:Map< String, String> map&n...
    99+
    2023-05-31
    hashmap 遍历
  • JavaScript如何实现二叉树层序遍历
    今天小编给大家分享一下JavaScript如何实现二叉树层序遍历的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。题目描述给你一...
    99+
    2023-07-05
  • java二叉树层序遍历怎么实现
    在Java中,可以使用队列来实现二叉树的层序遍历。具体步骤如下: 首先创建一个队列,将根节点入队。 进入循环,直到队列为空为...
    99+
    2024-03-15
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作