- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《空间数据结构》
作业报告
学号姓名:张弛
班级:测绘一班
学院:地球科学与环境工程学院
教师:胡亚
2015年11月29日
目录
TOC \o 1-3 \h \u 12473 练习题7.1 1
5192 (1) 画出二叉树bt的树形表示 1
31337 (2) 写出按先序、中序、后序遍历二叉树bt所得到的节点序列 1
4491 (3) 画出二叉树bt的后序线索化树 1
15301 练习题7.4 2
18853 7.4.1程序代码 2
10247 7.4.2头文件程序代码 3
11214 7.4.3运行结果 4
24289 课堂作业任务 4
30943 算法 5
1525 分析 5
12146 心得体会 5
PAGE
PAGE 1
空间数据结构课程作业四
练习题7.1设二叉树bt的存储结构如下:
1
2
3
4
5
6
7
8
9
10
lchild
0
0
2
3
7
5
8
0
10
1
data
j
h
f
d
b
a
c
e
g
i
rchild
0
0
0
9
4
0
0
0
0
0
其中,bt为树根节点指针,lchild、rchild分别为节点的左右孩子指针域,在这里使用节点编号作为指针域值,0表示指针域值为空;date为节点的数据域。请完成下列各题:
画出二叉树bt的树形表示;
图1 二叉树bt的树形表示
写出按先序、中序、后序遍历二叉树bt所得到的节点序列;
先序遍历节点序列:abcedfhgij
中序遍历节点序列:ecbhfdjiga
后序遍历节点序列:echfjigdba
画出二叉树bt的后序线索化树。
PAGE
PAGE 1
图2 二叉树bt的后序线索化树
练习题7.4一颗具有n个结点的完全二叉树以顺序方式存储在数组A中。设计一个算法构造该二叉树的二叉链存储结构。
7.4.1程序代码
#include头文件.h
//树的顺存储转化为链式存储
void Ctree (BTNode *t,ElemType A[],int i)
{
if (i=MaxSize||A[i]==NULL)//i异常或矩阵A为空
{
t=NULL;
}
else
{
t=(BTNode*)malloc(sizeof(BTNode));
t-data=A[i-1];
Ctree(t-lchild,A,2*i);//左孩子递归运算
Ctree(t-rchild,A,2*i+1);//右孩子递归运算
}
}
void main()
{
BTNode *B;
ElemType A[8]={A,B,C,D,E,F,G,H};//数的顺序存储数组
Ctree (B,A,1);
printf(树的链式存储输出:\n);
DispBTNode(B);//输出矩阵
printf(\n);
int i;
scanf(%d,i);
}
7.4.2头文件程序代码
#include stdio.h
#include malloc.h
#define MaxSize 9
typedef char ElemType;//数的定义
typedef struct node
{
ElemType data; //数据元素
struct node *lchild; //指向左孩子结点
struct node *rchild; //指向右孩子结点
} BTNode;
void DispBTNode(BTNode *b)
{
if (b!=NULL)
{ printf(%c,b-data);
if (b-lchild!=NULL || b-rchild!=NULL)
{ printf((); //有孩子结点时才输出(
DispBTNode(b-lchild); //递归处理左子树
if (b-rchild!=NULL) printf(,); //有右孩子结点时才输出,
DispBTNode(b-rchild); //递归处理右子树
printf()); //有孩子结点时才输出)
}
}
}
7.4.3运行结果
课堂作业任务
请写出执行函数FindNode(^A,‘C’)时系统栈的变化情况。系统栈有两列,第一列为节点地址,用“^节点值”表示(例如^A),第二列为函数继续被执行时,应执行的语句行数,语句行数如上述代码的1,2,3…所示。
算法如下
原创力文档


文档评论(0)