问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++中怎样以文本形式输出二叉树?

发布网友 发布时间:2022-05-10 21:40

我来回答

3个回答

热心网友 时间:2023-11-03 19:56

struct BtreeNode{
int data;
int ptrLtag,ptrRtag;//左右子树存在标记:0=不存在,1=存在子树,
//这变量可取消, 改下程序就行了,
BtreeNode* left;
BtreeNode* right;
};
//前序输出
bool saveBtreePre(BtreeNode* root,ofstream& fout)
{
if(root==0)
return false;

fout<<root->data<<'\t'<<root->ptrLtag<<'\t'<<root->ptrRtag<<endl;
saveBtreePre(root->left,fout);
saveBtreePre(root->right,fout);

return true;

}
//前序从文本重构二叉树
bool bulidBtreePre(BtreeNode** root,ifstream& fin)
{
BtreeNode* node=new BtreeNode;
//char ch;
fin>>node->data;
fin>>node->ptrLtag;
fin>>node->ptrRtag;

node->left=0;
node->right=0;
*root=node;
if((*root)->ptrLtag)
{
bulidBtreePre(&(*root)->left,fin);
}
if((*root)->ptrRtag)
{
bulidBtreePre(&(*root)->right,fin);
}
return true;
}
//后序输出
bool saveBtreePost(BtreeNode* root,ofstream& fout)
{
if(root==0)
return false;

saveBtreePost(root->left,fout);
saveBtreePost(root->right,fout);
fout<<root->data<<'\t'<<root->ptrLtag<<'\t'<<root->ptrRtag<<endl;

return true;

}
//后序重建二叉树
// bStack be used to store root of subtree, which be be constructed before their parents.
bool bulidBtreePost(BtreeNode** root,ifstream& fin)
{
std::stack<BtreeNode*> bStack;

while(!fin.eof())
{
BtreeNode* node=new BtreeNode;

if(!(fin>>node->data&&fin>>node->ptrLtag&&fin>>node->ptrRtag))
break;

node->left=0;
node->right=0;

if(node->ptrLtag==0&&node->ptrRtag==0)
bStack.push(node);
else if(node->ptrLtag==1&&node->ptrRtag==1)
{
node->right=bStack.top();
bStack.pop();
node->left=bStack.top();
bStack.pop();

bStack.push(node);
}
else
{
if(node->ptrLtag==1)
{
node->left=bStack.top();
bStack.pop();
bStack.push(node);
}
else
{
node->right=bStack.top();
bStack.pop();
bStack.push(node);
}
}
}
if(bStack.size()==1)
{
*root=bStack.top();
//bStack.pop();
return true;
}
else
return false;

}
//中序类似

热心网友 时间:2023-11-03 19:56

setw() 函数
#include <iomanip>

热心网友 时间:2023-11-03 19:56

按层遍历就好
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
牡丹叶子枯了怎么办 牡丹枯叶怎么回事 "他同情冤魂、惩办恶人,既有同情心又主持公道,既可爱又恐怖” 冯宝成传销诈骗邪教组织 冯保成团队,传销诈骗,家人深陷其中,求助。 南朝词臣北朝客,归来唯见秦淮碧。 池台竹树三亩馀至今人道江家宅的意思 池台竹树三亩馀至今人道江家宅是什... 高效、加分学习工具——小小答题错题本上线了 如何将三张合在一起的图片合并 砂锅红烧肉的做法 最正宗的做法_砂锅红烧肉怎么做 砂锅版红烧肉做法: C++中如果知道了二叉树的前序和中序遍历,怎么知道后序遍历?有点急~ 重建二叉树,已知中序和后序遍历顺序,求先序遍历次序。 有关重建二叉树,请教两句代码 从先序中序重建二叉树输出层序后序 至少需要知道前,中,后序遍历中的几种,就能重建二叉树?有无现成代码? 二叉树重建递归程序详解 二叉树的重建算法是什么 煎牛排怎么腌制? 股票除息日可不可以交易股票? 我的手机在微博上获取位置数据失败,这是什么原因? 微博拟上线了真实地理位置的功能,你如何看待这个功能? 高职高专学校有哪些 深圳公办职高有哪些学校 10690759888是什么电话号码 NBA2K14的真实GS nba2k14参数设置属性 持球防守 多少 符合实际啊 求一份NBA2K14的游戏参数,我发现2K14在和舍友对战的时候,防守太不给力,贴不住人 这个配置玩nba2k14怎样,开多大特效,配置如下: 184是什么电话 求nba2k11和nba2k14最低配置要求对比 C语言中如何将一个链表保存为文件? 脸上的痘印痘坑可以用激光点阵吗,像我这种做完一次多长时间 与网络时间同步 关于中秋节的小报 粗旷的男声唱的撕心裂肺的歌手? 找一首伤感英文歌 男生唱的 高音很好听 有种撕心裂肺的感觉 求一首男生高音英文歌,是一首很好听的歌曲只是记得*部分是撕心裂肺的啊··啊·啊 一首男生说唱叫什么回来,歌词有让我死心,男的撕心裂肺喊的,最近很流行的! 是哭着说唱的歌曲,想要挽留自 比较撕心裂肺的韩文歌曲 抖音里盲僧慢放的配音《开始懂了》是谁唱的?一个男的唱的撕心裂肺的那种。 嗓音粗的男生适合唱什么歌 梁静茹的情歌,男生唱起来会有什么感觉· 歌是男的唱的,歌词里面有想你的365天,这首歌名字叫什么? 之了课堂什么时候能更新完 苹果se照相机声音如何开? 左边腰疼厉害什么原因 左边腰疼是什么原因? 苍狼孟随红死了吗 苍狼别动队最后活着几个 苍狼什么东西能闹死了?