当前位置: 首页 > news >正文

宿迁建设公司网站国家免费职业技能培训官网

宿迁建设公司网站,国家免费职业技能培训官网,怎么做网站监控平台,河北省网络科技网站一、实验目的 本实验通过实现二叉树的链式存储实现及二叉树的基本操作,掌握递归算法的设计、递归算法与非递归算法之间的转换和遍历技术,为后续章节学习图的内容奠定基础。 二、实验内容 (1)、以链表为存储结构创建二叉树; (2)、分别用递归…

一、实验目的

       本实验通过实现二叉树的链式存储实现及二叉树的基本操作,掌握递归算法的设计、递归算法与非递归算法之间的转换和遍历技术,为后续章节学习图的内容奠定基础。

二、实验内容

(1)、以链表为存储结构创建二叉树;

(2)、分别用递归非递归方式实现二叉树的中序遍历;

三、实验原理、方法和手段

       链表存储二叉树通常具有两个指针域的链表作为二叉树的存储结构,其中每个结点由数据域、左指针域和右指针域组成。两个指针域分别指向该结点的左、右孩子。若某结点没有左孩子或右孩子,则对应的指针域为空。最后,还需要一个链表的头指针指向根结点。 二叉树是非线性结构,遍历时先访问根结点还是先访问子树、先访问左子树还是先访问右子树必须有所规定,这就是遍历规则。采用不同的遍历规则会产生不同的遍历结果,因此对二叉树进行遍历时,必须设定遍历规则。根据遍历规则采用递归或者非递归的方式实现二叉树的遍历。采用非递归算法实现中序遍历时要用到栈结构。根据中序遍历二叉树的递归定义,转换成非递归函数时用栈来保存返回的结点,先扫描根结点的所有左结点并入栈,出栈一个结点,访问之,然后扫描该结点的右结点并入栈再扫描该右结点的所有左结点并入栈,如此下去……,直到到栈空为止。

C语言代码如下:

#include<stdio.h>
#include<stdlib.h>
#define MaxSize 50
typedef struct BiTNode//定义二叉树的数据结构 
{char data;struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;  typedef struct//定义顺序栈的数据结构 
{BiTree data[MaxSize];int top;
}SqStack;
void CreateTree(BiTree *T)//创建二叉树 
{char elem;scanf("%c",&elem);if('0'==elem)	{*T=NULL;return;}else{*T=(BiTNode*)malloc(sizeof(BiTNode));(*T)->data=elem;(*T)->lchild=NULL; (*T)->rchild=NULL;CreateTree(&((*T)->lchild));CreateTree(&((*T)->rchild));}return ;
}
SqStack* InitStack(SqStack *s)//初始化栈 
{s=(SqStack*)malloc(sizeof(SqStack));s->top=-1;return s;} bool StackEmpty(SqStack *s)//判断栈是否为空 {return(s->top==-1);}
SqStack* Push(SqStack *s,BiTree e)
{if(s->top==MaxSize-1)exit(1);s->data[s->top++]=e;return s;
}BiTree Pop(SqStack *s,BiTree e){if(s->top==-1)exit(1);e=s->data[--s->top];return e;}void DestroyStack(SqStack *s){free(s); }
void InOrder1(BiTree Tree)//递归实现二叉树的中序遍历 
{if(Tree==NULL)return;InOrder1(Tree->lchild);printf("%c",Tree->data);InOrder1(Tree->rchild);
}void InOrder2(BiTree TREE)//非递归实现二叉树的中序遍历 
{BiTNode *p=TREE;SqStack *st;st=InitStack(st);while(!StackEmpty(st)||p!=NULL){while(p!=NULL){st=Push(st,p);p=p->lchild;}if(!StackEmpty(st)){p=Pop(st,p);printf("%c",p->data);p=p->rchild;}} printf("\n");DestroyStack(st);
}
int main()
{BiTree t;CreateTree(&t);printf("二叉树创建完毕!\n");printf("递归的中序序列为:\n");InOrder1(t);printf("\n非递归的中序序列为:\n");InOrder2(t); return 0;
}

 

http://www.lbrq.cn/news/2401867.html

相关文章:

  • 品牌网鞋有哪些牌子seo搜索引擎优化排名
  • 网站转微信小程序网络推广平台代理
  • 兰州一键建站企业成都网络运营推广
  • 百度移动端网站营销型网站策划
  • 做网站开发用sublime好吗网站优化公司认准乐云seo
  • wordpress 加相关文章百度seo是什么意思呢
  • 哪里可以接做ppt的网站清远新闻最新
  • 挂机宝怎么做网站本周热点新闻事件
  • 自己做网站怎么盈利今日重大国际新闻
  • 昆明网站建设创意b2b电商平台
  • 保定做网站电话抖音怎么推广
  • 万网做网站精准营销的案例
  • 福州网站设计软件公司河南网站推广那家好
  • 网站尾部一般怎么做东莞关键词优化实力乐云seo
  • 济南网站建设-中国互联湖南优化推广
  • 在线logo设计生成器免费seo网址
  • 做外汇都要看什么网站聚名网域名注册
  • 自己做网站卖什么名字百度推广效果
  • wordpress关键词有用吗seo怎么才能优化好
  • 广西代理网站建设公司百度一下网页打开
  • 具有价值的常州做网站网站查询平台官网
  • 制作网站建设策划方案百度搜索推广是什么
  • html如何做自己的网站免费自助建站网站
  • 网站建设 无锡轻松seo优化排名
  • 古风网站怎么做互动营销平台
  • 诸城网站建设获客渠道有哪些
  • 观澜网站制作下载百度搜索
  • wordpress 出错seo是怎么优化上去
  • 旅游网站制作旅游网百度网盘pc网页版入口
  • 郑州商城网站制作百度商家入驻怎么做
  • 数学专业转行做大数据容易吗?需要补什么?
  • FMEA-CP-PFD三位一体数字化闭环:汽车部件质量管控的速效引擎
  • 访问 gitlab 跳转 0.0.0.0
  • 计算机网络:(十)虚拟专用网 VPN 和网络地址转换 NAT
  • 《Electron应用性能深耕:资源加载与内存治理的进阶路径》
  • 腾讯 ChatBI 调研