实验四 树
一、 实验目的
1.熟悉二叉树的链式存储结构
2.掌握二叉树的建立、深度优先递归遍历等算法
3.能够利用遍历算法实现一些应用
二、实验内容
1.已知二叉树采用二叉链表存储结构,编写一个算法交换二叉树所有左、右子树的位置,即结点的左子树变为结点的右子树,右子树变为左子树。(文件夹:习题12_14)
//二叉链表的结构类型定义.h
const int maxsize=1024;
typedef char datatype;
typedef struct node
{
datatype data;
struct node *lchild,*rchild;
}bitree;
//二叉树的建立.h
bitree * creattree()
{
char ch;
bitree*Q[maxsize];
int front,rear;
bitree*root,*s;
root=NULL;
front=1;rear=0;
while((ch=getchar())!='#')
{
s=NULL;
if(ch!='@')
{
s=new bitree;
s->data=ch;
s->lchild=NULL;
s->rchild=NULL;
}
rear++;
Q[rear]=s;
if(rear==1)root=s;
else
{
if(s&&Q[front])
if(rear%2==0)Q[front]->lchild=s;
else Q[front]->rchild=s;
if(rear%2==1)front++;
}
}
return root;
}
//二叉树的输出.h
//按照先序序列输出
using std::cout;
void preorder(bitree*p)
{
if(p!=NULL)
{
cout<<p->data;
if(p->lchild!=NULL||p->rchild!=NULL)
{
cout<<"(";
preorder(p->lchild);
if(p->rchild!=NULL)cout<<",";
preorder(p->rchild);
cout<<")";
}
}
}
//交换左右子树.h
void swap( bitree * R )
{
bitree * p;
if( R == NULL )return;
p = R->lchild;
R->lchild = R->rchild;
R->rchild = p;
swap( R->lchild );
swap( R->rchild );
return;
}
//交换左右子树的主程序文件.cpp
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include"二叉链表的结构类型定义.h"
#include"二叉树的建立.h"
#include"二叉树的输出.h"
#include"交换左右子树.h"
using namespace std;
int main()
{
bitree*pb;
pb=creattree();
preorder(pb);
cout<<endl;
swap(pb);
preorder(pb);
cout<<endl;
system("PAUSE");
return 0;
}
分享到:
相关推荐
操作系统实验C语言编写——作业调度.doc
基于C语言的操作系统实验——内存管理.zip
利用运算符优先关系,实现对算术四则混合运算表达式的求值。 【测试数据】 (1)能够判断表达式中的括号是否匹配,测试的表达式中括号不匹配,可以重新输入。 (2)能够处理多位整数以及浮点数。 (3)具体测试数据...
本人是南京航空航天大学的学生,我们的一个计算机软件基础大作业是编写4个程序,分别是约瑟夫斯问题、停车场管理、带权图的最小生成树提取、几种排序算法的比较。希望能够帮助到大家,尤其是南航的学弟学妹们!工程...
内涵实验报告和源代码,注释详细,可直接做课设使用,课程报告已写好。 题目:学生管理系统设计 功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名、学号、性别、出生年月、专业、班级、家庭地址、宿舍...
C语言初学者的课程设计,适用于大一新生,方便好用。包括实验报告和源代码。
(1) 可变分区方式是按作业需要的主存空间大小来分割分区的。当要装入一个作业时,根据作业需要的主存容量查看是否有足够的空闲空间,若有,则按需分配,否则,作业无法装入。假定内存大小为128K,空闲区说明表格式...
本资源为博主课程作业,与大家共享。解压后分为实验报告和软件包。实验报告中有地图四色着色算法和程序运行结果。打开软件文件夹后,点击“paint001.exe”可以直接运行可视化界面,实现地图着色模拟展示。里面有程序...
含本人实验报告,有具体流程图,实验课上写的,有更好的想法可以提出,大家一起学习,赚点积分不容易
颜晖、张泳,《C语言程序设计实验与习题指导(第3版)》,高等教育出版社,2015年,ISBN 978-7-04-043563-4 常见问题 Q:我需要特殊版本的计算机吗? A:任何计算机都可以用于C语言编程,包括但不限于各个版本的...
这是本人自己的作业,先拿出来和大家分享,用C语言编写的,程序没有运行出结果,限本人C语言水平有限,只供大家参考。有需要者。(这是程序部分),
实验1:螺旋矩阵实验 —— Linux下的C编程 实验2:内核定制实验 —— FloppyLinux的实现 实验3:脚本编写实验 —— 批量建立和删除用户 实验4:驱动程序实验 —— 实现驱动程序插入内核并调用 实验5:进程界面实验 ...
操作系统作业: 进程的执行过程(加载数据——处理数据——生成进程——计算数据(就绪、执行、阻塞)——内存管理——时间片——进程调度......)包含实验报告 使用的是C语言和easyx绘图插件,1600多行,原创没有...
此资源包含完整代码和完整实验报告(加上你的学号姓名即可提交)
听第三,第四章实验课,完成课后习题,并完成补做的实验题 预习第五章,第六章,上课,完成网上的练习题 将不会做的题目询问老师,参加网上讨论 自学第七章 做网上的模拟题,参加复习课,订正习题错误。
操作系统文件管理实验报告(1).doc
编译技术实验—— 实 验 一:词法分析 实验二:语法分析 实验三:语义分析 实 验 四:编译器的实现 外加平时作业PDF版本
以生产者消费者模型为基础,在Windows环境下创建一个控制台进程,在该进程中创建读者写者线程模拟生产者和消费者。写者线程写入数据,然后将数据放置在一个空缓冲区中供读者线程读取。读者线程从缓冲区中获得数据,...
实验要求 1) 分析后缀表达式求值的算法思想,用C(C++)语言完成程序设计。 2) 上机调试通过实验程序。 3) 给出具体的算法分析,包括时间复杂度和空间复杂度等。 4) 撰写实验报告(把输入实验数据及运行结果用抓图...