实验四 树
一、 实验目的
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语言编写——作业调度 以下是本次实验的知识点总结: 1. 操作系统实验的目的:本次实验的目的是通过C语言编写一个模拟批处理多道操作系统的作业调度程序,了解作业调度在操作系统中的作用。 2. 作业...
### 操作系统——作业调度实验知识点 #### 一、实验目的 本次实验旨在通过实际操作加深学生对于操作系统中作业调度机制的理解。通过使用高级编程语言(如C、C++或Java)来模拟作业调度的过程,学生能够更好地理解...
再者,传递性是指如果关系R满足(a, b)和(b, c)都在R中,那么(a, c)也必须在R中。若M(R)是传递矩阵,即对于所有i, j, k,当a[i][j] = 1且a[j][k] = 1时,a[i][k]也必须为1,那么R是传递的。反之,如果存在i, j, k使得...
相关项目设计中,皆可应用在项目开发、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面中 可借鉴此优质项目实现复刻,也可以基于此项目进行扩展来开发出更多...
这个实验可能包括实现不同的调度算法,如FCFS(先来先服务)、SJF(最短作业优先)、优先级调度和多级反馈队列等。通过模拟,学生可以理解各种调度策略对系统性能的影响。 2. **内存管理**: 内存管理实验通常涉及...
3. **实现响应比高者优先(HRRN)作业调度算法**:通过编写C语言程序来实现一种常见的作业调度策略——响应比高者优先算法。 #### 二、实验原理 ##### 批处理系统调度与管理方式 批处理系统是一种操作系统模式,...
利用运算符优先关系,实现对算术四则混合运算表达式的求值。 【测试数据】 (1)能够判断表达式中的括号是否匹配,测试的表达式中括号不匹配,可以重新输入。 (2)能够处理多位整数以及浮点数。 (3)具体测试数据...
在本项目中,我们关注的是一个使用C语言编写的经典游戏——贪吃蛇。这是一个常见的编程实验,旨在帮助学生深入理解C语言的基本概念,如控制结构、数组、函数以及内存管理。下面将详细介绍这个项目涉及的关键知识点。...
在本实验作业中,我们将深入探讨C语言编程中的一个重要数据结构——链表。链表是一种动态数据结构,它不像数组那样需要预先分配连续的内存空间,而是通过节点间的指针链接来存储数据。这对于处理不确定数量的数据...
在C语言中,内存主要分为四个区域:栈区、堆区、静态存储区和常量区。栈区用于存储函数调用时的局部变量和函数参数;堆区是程序员动态分配内存的地方;静态存储区存放全局变量和静态变量;常量区存储字符串字面量等...
在这个实验中,我们将关注两种重要的进程调度算法:先来先服务(First-Come, First-Served, FCFS)和短作业优先(Shortest Job First, SJF)。这两个算法都是为了优化处理器的利用率和系统响应时间。 先来先服务...
本文将深入探讨“嵌入式实验1:单片机IO口——流水灯”的相关知识点,旨在帮助初学者理解单片机的输入/输出(IO)口操作及其在实际应用中的体现。 首先,我们需要了解什么是单片机。单片机,又称为微控制器,是一种...
本人是南京航空航天大学的学生,我们的一个计算机软件基础大作业是编写4个程序,分别是约瑟夫斯问题、停车场管理、带权图的最小生成树提取、几种排序算法的比较。希望能够帮助到大家,尤其是南航的学弟学妹们!工程...
"C语言大作业报告——2048小游戏程序.pdf" 本资源为一份C语言大作业报告,旨在设计和实现一个小型信息库管理系统或闯关式游戏程序,即2048小游戏程序。该游戏程序要求使用C语言编写,采用自顶向下的模块化设计思想...
内涵实验报告和源代码,注释详细,可直接做课设使用,课程报告已写好。 题目:学生管理系统设计 功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名、学号、性别、出生年月、专业、班级、家庭地址、宿舍...
实验二——动态高优先权优先调度算法.doc 本实验的主要目的是让学生熟悉并掌握动态分区存储管理的各种算法,包括首次适应算法、最正确适应算法和最坏适应算法等,并且能够实现分区合并。实验要求学生使用高级语言...
实验报告的格式需要按照“实验报告模板”进行编写,内容包括实验目的、实验步骤、实验结果、实验总结等,并且需要提交源代码和实验报告,不允许贴代码。 知识点6:编译原理课程的重要性 编译原理课程是计算机科学...
本实验“东南大学密码学实验——扩展欧几里得算法”是针对该领域的一次实践教学,旨在让学生深入理解并掌握扩展欧几里得算法这一基础数学工具。本文将详细解析该算法及其在密码学中的应用。 扩展欧几里得算法是基于...
(1) 可变分区方式是按作业需要的主存空间大小来分割分区的。当要装入一个作业时,根据作业需要的主存容量查看是否有足够的空闲空间,若有,则按需分配,否则,作业无法装入。假定内存大小为128K,空闲区说明表格式...
实验使用C语言实现,通过模拟这些操作,学生可以深入了解内存管理的原理和算法。`malloc.h`、`stdio.h`、`iostream.h` 和 `stdlib.h` 是C语言中常用的头文件,它们提供了必要的内存分配和输入/输出功能。 总的来说...