Skip to content

Latest commit

 

History

History

cpp-BinaryTree

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

二叉树的链式存储、序列化和反序列化

一切代码测试于 C-FREE 5

实验介绍

  • 二叉树是由结点指针将多个结点关联起来的抽象数据结构,是存在于内存中的,不能进行持久化存储。

  • 如果需要将一颗二叉树的结构持久化保存在磁盘文件中,需要将其转换为字符串并保存到文件中。

  • 序列化是对二叉树进行先序遍历产生一个字符序列,与一般的先序遍历不一样,需要记录空结点用'#'字符表示,并且假设序列中没有结点的值为'#'。

  • 反序列化是通过先序序列化的结果串str构建对应的二叉树,其过程是用i从头扫描str;采用先序方法,当i超界时返回NULL;否则当遇到'#'字符时返回NULL,当遇到其它字符时,创建一个结点,可以采用递归的方法构造该二叉树;也可以采用非递归方法构造该二叉树。

实验内容

  1. 采用二叉链式存储创建二叉树B1

    func1

  2. 采用先序序列化显示输出序列,并存储到文件中

    func2

    func2-result

  3. 从文件中读出序列,并反序列化的递归方法构造二叉树B2

    func3

  4. 从文件中读出序列,并反序列化的非递归方法构造二叉树B3

    func4

  5. 使用非递归方法输出二叉树中序遍历序列

    func5

  6. 使用非递归方法输出二叉树后序遍历序列

    func6

  7. 销毁释放二叉树B1,B2,B3

    func7