栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将二叉树保存到文件中

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将二叉树保存到文件中

请在LeetCode上查看。

我喜欢此解决方案,因为它相对有效并且可以产生光输出文件。

假设您有一棵这样的树:

    _30_    /          10    20 /     /   50    45  35

此解决方案使您可以将其序列化为这样的输出文本文件:

30 10 50 # # # 20 45 # # 35 # #

为此,足以在树中执行简单的预遍历:

void writeBinaryTree(BinaryTree *p, ostream &out) {  if (!p) {    out << "# ";  } else {    out << p->data << " ";    writeBinaryTree(p->left, out);    writeBinaryTree(p->right, out);  }}

如您所见,

#
符号用于表示空节点。

要将字符串反序列化为树,可以使用:

void readBinaryTree(BinaryTree *&p, ifstream &fin) {  int token;  bool isNumber;  if (!readNextToken(token, fin, isNumber))     return;  if (isNumber) {    p = new BinaryTree(token);    readBinaryTree(p->left, fin);    readBinaryTree(p->right, fin);  }}

就像我之前说的那样,此方法产生了二进制树的轻量表示形式。

当然,它有一个严重的缺点:它需要一个符号来表示空节点。

如果树的节点是可以包含此符号本身的字符串,则可能导致潜在的问题。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/387611.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号