把我的 C 作业贴出来 实验四 树——1

该博客围绕二叉树实验展开,目的是熟悉二叉树链式存储结构,掌握其建立、深度优先递归遍历等算法。实验内容为编写算法交换二叉树所有左、右子树位置,给出了二叉树建立、输出、交换左右子树的代码及主程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验四

一、 实验目的

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值