序列化(层序遍历)
来源:互联网 发布:视频软件有哪些 编辑:程序博客网 时间:2024/05/18 00:06
使用层序遍历去遍历每一个节点,当该结点为NULL时,str = str+"#!"当该结点非NULL时,str = str+该节点的data+"!"#include <iostream>#include <vector>#include<queue>#include <string>using namespace std;typedef struct TreeNode{ string data; struct TreeNode* lchild; struct TreeNode* rchild;}TreeNode;string levelSerialize(TreeNode* T) //层次序列化{ if (!T) return "#!"; string str = T->data + "!"; queue<TreeNode*> Q; Q.push(T); TreeNode* cur; //记录每次的出队节点 while (!Q.empty()) { cur = Q.front(); Q.pop(); if (cur->lchild) { str = str + cur->lchild->data + "!"; Q.push(cur->lchild); } else str = str + "#!"; if (cur->rchild) { str = str + cur->rchild->data + "!"; Q.push(cur->rchild); } else str = str + "#!"; } return str;}void levelTraver(TreeNode* T) //层次遍历{ if (!T) return; queue<TreeNode*> Q; TreeNode* cur = T; Q.push(cur); while (!Q.empty()) { cout << Q.front()->data << " "; cur = Q.front(); Q.pop(); if (cur->lchild) Q.push(cur->lchild); if (cur->rchild) Q.push(cur->rchild); }}int main(){ TreeNode* s1 = new TreeNode; TreeNode* s2 = new TreeNode; TreeNode* s3 = new TreeNode; TreeNode* s4 = new TreeNode; TreeNode* s5 = new TreeNode; TreeNode* s6 = new TreeNode; TreeNode* s7 = new TreeNode; s1->data = "1"; s1->lchild = s2; s1->rchild = s5; s2->data = "2"; s2->lchild = NULL; s2->rchild = s3; s3->data = "3"; s3->lchild = s4; s3->rchild = NULL; s4->data = "4"; s4->lchild = NULL; s4->rchild = NULL; s5->data = "5"; s5->lchild = s6; s5->rchild = NULL; s6->data = "6"; s6->lchild = NULL; s6->rchild = s7; s7->data = "7"; s7->lchild = NULL; s7->rchild = NULL; cout << "层序遍历" << endl; levelTraver(s1); cout << endl; string s = levelSerialize(s1); cout << s; return 0;}
阅读全文
0 0
- 序列化(层序遍历)
- 层序遍历二叉树与二叉树序列化
- 使用层序遍历序列化和反序列化二叉树
- 基于层序+中序遍历序列构建二叉树
- 【算法】二叉树遍历(层序)
- 【树】层序遍历
- 数据结构--层序遍历
- 【数据结构】二叉树前中后序遍历、层序遍历(递归实现)
- 5-6 层序遍历(广度优先遍历)
- 【数据结构与算法】二叉树的遍历(递归遍历、非递归遍历、层序遍历)
- 根据前序/后序/层序+中序遍历序列建立二叉树
- 栈的压入、弹出序列 和从上往下打印二叉树(层序遍历)
- 二叉树系列(一):已知先序遍历序列和中序遍历序列,求后序遍历序列
- 二叉树系列(二):已知中序遍历序列和后序遍历序列,求先序遍历序列
- 后序遍历序列
- 二叉树遍历 层序遍历
- 由中序遍历序列和后序遍历序列构造二叉树(递归实现)
- 二叉搜索树的后序遍历序列(判断后序遍历序列是否合法)
- Redis 简介及安装配置
- 缓存淘汰算法
- 通过jsp实现验证码
- gulp前端自动化构建工具:常用插件介绍及使用
- 如何获得C币
- 序列化(层序遍历)
- Linux 命令行获取文件或目录的大小
- NIO之Reactor
- 7624:山区建小学
- 笔试选择题知识点(一)
- vue添加axios,并且指定baseurl
- buntu安装JDK1.8.0_25与配置环境变量
- Android中Bitmap, Drawable, Byte,ID之间的转化
- VIM配置