JackiCki 2020-12-25 17:15 采纳率: 25%

# 二叉树怎样存储字符串？

#include <iostream>
using namespace std;
#define M 20
#include<cstring>
#include<stdio.h>
#include <fstream>
#include <iomanip>
#include<windows.h>
#include<mmsystem.h>
#pragma comment(lib, "WINMM.LIB")
using namespace std;
//int sum = 0;//全局变量，用于统计当前的总人数
class Student//定义student类
{
public:
friend void Read(char name[], char sex[], char id[], char phone[]);//友元函数，用于读取文件
char name[15];          //姓名
char sex[15];           //性别
char id[15];            //学号
char phone[15];            //电话号码
};
Student stu[40];
int mem[40];
int sum = 0;

struct BiNode
{
char name[15];
char sex[15];
char id[15];
char phone[15];
BiNode* lchild, * rchild;
};
class BiTree
{
public:
BiTree() { root = Creat(root); }
~BiTree() { Release(root); }
void PreOrder() { PreOrder(root); }
int BTreeLeaves() { return BTreeLeaves(root); }//叶子结点
private:
BiNode* Creat(BiNode* bt);//建立一棵二叉树
void Release(BiNode* bt);//销毁一棵二叉树
void PreOrder(BiNode* bt);//前序遍历二叉树
int BTreeLeaves(BiNode* bt); //叶子结点
BiNode* root;
};
int BiTree::BTreeLeaves(BiNode* bt)
{
if (bt == NULL) return 0;
else
if (bt->lchild == NULL && bt->rchild == NULL)
return 1;
else
return     BTreeLeaves(bt->lchild) + BTreeLeaves(bt->rchild);
}
//根据扩充序列构建二叉树
BiNode* BiTree::Creat(BiNode* bt)
{
char name[20],sex[20],id[20],phone[20];

for (int i = 0; i < 7; i++)
{
cout << "请输入新同学：";
cout << ""  ; cin >> name;
cout << ""  ; cin >> id;
cout << ""  ; cin >> sex;
cout << ""  ; cin >> phone;
if (name[i] == '#') bt = NULL;//#结束分支
else {
bt = new BiNode;
bt->name[i] = name[i];
bt->id[i] = id[i];
bt->sex[i] = sex[i];
bt->phone[i] = phone[i];
bt->lchild = Creat(bt->lchild);
bt->rchild = Creat(bt->rchild);
}
return bt;
}

}
void BiTree::Release(BiNode* bt)
{
if (bt == NULL) return;
else {
Release(bt->lchild);   //释放左子树
Release(bt->rchild);   //释放右子树
delete bt;            //释放根结点
}
}
void BiTree::PreOrder(BiNode* bt)
{
for (int i = 0; i < 7; i++)
{
if (bt == NULL) return;
else {
cout << "姓名:" << bt->name[i] << endl;
cout << "学号:" << bt->id[i] << endl;
cout << "性别:" << bt->sex[i] << endl;
cout << "电话号码:" << bt->phone[i] << endl;
PreOrder(bt->lchild);
PreOrder(bt->rchild);
}
break;
}
}
int main()
{
cout << "请输入一个扩充序列构建二叉树：" << endl;
BiTree T;
cout << "\n该二叉树的前序遍历序列是：";
T.PreOrder();
cout << "\n该二叉树的叶子结点个数是：" << T.BTreeLeaves() << endl;
system("pause");
return 0;
}

• 写回答

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

• 502203305 2020-12-25 18:28
关注

字符串拷贝用 strcpy 或者 memcpy

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

#### 悬赏问题

• ¥20 你对Pyton有信心吗？
• ¥15 知道这个是什么图吗，想知道制作详细做法，或者模版也行
• ¥15 CubeMX配置lwip实现TCP数据传输
• ¥15 关于#51单片机#的问题：不能用中断、定时器之类的辅助实现
• ¥15 blastfoam初学者尝试跑算例遇到问题
• ¥25 pyqt6常规布局问题！我刚学 有点难度！
• ¥20 基于ros2的orbslam3的实时运行
• ¥100 支付行业技术人员来一个。常年包养
• ¥15 kotlin multiplaform Compose项目 需要实现一个文件选择器获取手机上的文件
• ¥15 Python没爬取到数据，求看这个是什么原因