qq_39677327 2022-05-20 17:20 采纳率: 94.9%

# 代码完善数据结构二叉树

（1）输出该二叉树的前序遍历序列；
（2）输出该二叉树的中序遍历序列；
（3）输出该二叉树的后序遍历序列。

#include<iostream>
using namespace std;

struct BTree
{
char data;
BTree *lchild, *rchild;
};

class Tree
{
public:
Tree() { root = Create(root); }
~Tree() { relase(root); }
void preorder() { preorder(root); }
void inorder() { inorder(root); }
void postorder() { postorder(root); }
private:
BTree *root;
BTree *Create(BTree *t);
void relase(BTree *t) ;
void preorder(BTree *t);
void inorder(BTree *t);
void postorder(BTree *t);
};

BTree *Tree::Create(BTree *t)
{
char ch;
cin >> ch;//输入结点
if (ch == '#')
{
t = NULL;
}
else
{
t = new BTree;
t->data = ch;
t->lchild = Create(t->lchild);
t->rchild = Create(t->rchild);
}
return t;
}

void Tree::preorder(BTree *t)
{
if (t == NULL)
{
return;
}
else
{
cout << t->data;
preorder(t->lchild);
preorder(t->rchild);
}
}

int main()
{
cout << "请输入二叉树的结点数据：";
Tree A;
cout << "前序遍历为：" << endl;
A.preorder();
cout << "中序遍历为：" << endl;
A.inorder();
cout << "后序遍历为：" << endl;
A.postorder();
return 0;
}
• 写回答

#### 2条回答默认 最新

• 关注
#include<iostream>
using namespace std;

struct BTree
{
char data;
BTree *lchild, *rchild;
};

class Tree
{
public:
Tree() { root = Create(root); }
~Tree() { relase(root); }
void preorder() { preorder(root); }
void inorder() { inorder(root); }
void postorder() { postorder(root); }
private:
BTree *root;
BTree *Create(BTree *t);
void relase(BTree *t) ;
void preorder(BTree *t);
void inorder(BTree *t);
void postorder(BTree *t);
};

BTree *Tree::Create(BTree *t)
{
char ch;
cin >> ch;//输入结点
if (ch == '#')
{
t = NULL;
}
else
{
t = new BTree;
t->data = ch;
t->lchild = Create(t->lchild);
t->rchild = Create(t->rchild);
}
return t;
}

void Tree::preorder(BTree *t)
{
if (t == NULL)
{
return;
}
else
{
cout << t->data;
preorder(t->lchild);
preorder(t->rchild);
}
}
void Tree::inorder(BTree *t)
{
if (t == NULL)
{
return;
}
else
{
inorder(t->lchild);
cout << t->data;
inorder(t->rchild);
}
}
void Tree::postorder(BTree *t)
{
if (t == NULL)
{
return;
}
else
{
postorder(t->lchild);
postorder(t->rchild);
cout << t->data;
}
}

void Tree::relase(BTree *t)
{
if (t == NULL)
{
return;
}
else
{
relase(t->lchild);
relase(t->rchild);
delete t;
}
}

int main()
{
cout << "请输入二叉树的结点数据：";
Tree A;
cout << "前序遍历为：" << endl;
A.preorder();
cout << endl;

cout << "中序遍历为：" << endl;
A.inorder();
cout << endl;

cout << "后序遍历为：" << endl;
A.postorder();
return 0;
}

如有帮助，请点击我的回答下方的【采纳该答案】按钮帮忙采纳下，谢谢!

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论 编辑记录

• 系统已结题 5月29日
• 已采纳回答 5月21日
• 创建了问题 5月20日

#### 悬赏问题

• ¥15 燃机的MPC控制器代码问题
• ¥15 powershell删除目录及文件空格等符号问题
• ¥20 微信h5网页如何静默获取到用户的基本信息（头像昵称）
• ¥15 如图所示交换机网络该如何规划配置
• ¥15 CUDA driver error
• ¥15 Dijkstra 算法的堆优化方法
• ¥15 师哥师姐们，如何帮我下载一下python？
• ¥15 Office版本升级，Oracle连接报错
• ¥20 利用python搜索PDF文件中是否存在1
• ¥15 ImportPathMismatchError