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

做外贸那个网站比较好网页设计实训总结1500字通用

做外贸那个网站比较好,网页设计实训总结1500字通用,湖州网站建设企业,备案网站名称怎么写个人目录 1.线索二叉树是什么? 2.包含头文件 3.结点设计 4.接口函数定义 5.接口函数实现 线索二叉树是什么? 线索二叉树(Threaded Binary Tree)是一种对普通二叉树的扩展,它通过在树的某些空指针上添加线索来实现更高效的遍…

目录

        1.线索二叉树是什么?

        2.包含头文件

        3.结点设计

        4.接口函数定义

        5.接口函数实现


线索二叉树是什么?

        线索二叉树(Threaded Binary Tree)是一种对普通二叉树的扩展,它通过在树的某些空指针上添加线索来实现更高效的遍历操作。线索二叉树的目的是减少查找特定节点(如前驱或后继节点)所需的时间,从而提高树的搜索效率。以下是线索二叉树的特点:

        1.普通二叉树的扩展:线索二叉树是基于普通二叉树的,它保留了二叉树的所有性质。

        2.线索:在二叉树的空指针(左子树或右子树的指针)上添加线索,这些线索可以指导我们找到节点的前驱或后继。

        3.前驱和后继:每个节点的前驱是其在中序遍历中直接前的一个节点,后继是直接后的节点。线索二叉树允许我们通过线索快速找到这些节点。


包含头文件

#include<stdio.h>
#include<stdlib.h>

结点设计

#define Initsize 100
typedef char Elemtype;typedef struct ThreadTree {Elemtype data;					//定义Elemtype类型的变量存储结点值struct ThreadTree* lchild;		//定义ThreadTree类型的指针变量lchild存储左子树的地址struct ThreadTree* rchild;		//定义ThreadTree类型的指针变量rchild存储右子树的地址int Lvalue, Rvalue;				//定义int类型的变量Lvalue和Rvalue分别标识线索
}ThreadTree,* ThTree;ThTree Pre = NULL;					//定义ThTree类型的全局变量Pre指向此次结点的前驱结点

接口函数定义

void InitThTree(ThTree& A);				//用于初始化线索二叉树
void InsertTree(ThTree& A);				//用于输入数据建立二叉树
void InOrder(ThTree A);					//用于在二叉树中执行中序遍历
void InOrderVisit(ThTree& A);			//用于在结点中进行中序线索化
void InOrderThread(ThTree& A);			//用于中序遍历线索化二叉树
void PreOrder(ThTree A);				//用于在二叉树中执行先序遍历
void PreOrderVisit(ThTree& A);			//用于先序遍历线索化二叉树
void PreOrderThread(ThTree& A);			//用于先序遍历线索化二叉树
void PostOrder(ThTree A);				//用于执行后序遍历
void PostOrderVisit(ThTree& A);			//用于后序遍历线索化二叉树
void PostOrderThread(ThTree& A);		//用于后序遍历线索化二叉树

接口函数实现


void PostOrderThread(ThTree& A) {	//用于后序遍历线索化二叉树Pre = NULL;if (A != NULL) {PostOrder(A);if (A->rchild == NULL){Pre->Rvalue = 1;}}
}			void PostOrderVisit(ThTree& A) {	//用于后序遍历线索化二叉树if (A->lchild == NULL) {		//若传入的结点的左子树为空,则将该结点的左子树线索化A->Lvalue = 1;A->lchild = Pre;}if (A->rchild == NULL && Pre != NULL) {//若传入的结点的空子树为空,且前驱结点不为空,则将该结点的左子树线索化Pre->rchild = A;Pre->Rvalue = 1;}Pre = A;
}				void PostOrder(ThTree A) {		//用于执行后序遍历if (A != NULL) {PostOrder(A->lchild);PostOrder(A->rchild);PostOrderVisit(A);}
}void PreOrderThread(ThTree& A) { //用于先序遍历线索化二叉树Pre = NULL;								if (A != NULL) {PreOrder(A);if (Pre->rchild == NULL) {Pre->Rvalue = 1;}}
}void PreOrderVisit(ThTree& A) {	 //用于先序遍历线索化二叉树if (A->lchild == NULL) {	 //若传入的结点的左子树为空,则将该结点的左子树线索化A->Lvalue = 1;A->lchild = Pre;}if (A->rchild == NULL && Pre != NULL) {//若传入的结点的空子树为空,且前驱结点不为空,则将该结点的左子树线索化Pre->Rvalue = 1;Pre->rchild = A;}Pre = A;
}void PreOrder(ThTree A)	{		  //用于在二叉树中执行先序遍历if (A != NULL) {PreOrderVisit(A);if (A->Lvalue==0) {PreOrder(A->lchild);}PreOrder(A->rchild);}
}void InOrderThread(ThTree& A) {	  //用于中序遍历线索化二叉树Pre = NULL;					  //遍历第一个结点时,第一个结点无前驱结点,故Pre为NULLif (A != NULL) {InOrder(A);							//进行中序遍历if (Pre->rchild == NULL) {			//将中序遍历的最后一个结点的右子树线索化Pre->Rvalue = 1;				//因为其结点无后继,故不更新指向}}
}void InOrderVisit(ThTree& A) {		//用于在结点中进行线索化if (A->lchild == NULL) {		//左子树若为空,则将其左子树线索化A->Lvalue = 1;A->lchild = Pre;}if (A->rchild == NULL && Pre != NULL) {//右子树若为空,则将其右子树线索化Pre->rchild = A;Pre->Rvalue = 1;}Pre = A;		//更新指向前驱结点的指针pre
}void InOrder(ThTree A) {			//用于在二叉树执行中序遍历if (A!= NULL) {					InOrder(A->lchild);InOrderVisit(A);InOrder(A->rchild);}
}void InsertTree(ThTree& A) {	//用于输入数据建立二叉树ThTree Q[Initsize],		//定义ThTree类型的指针数组存储根结点的地址W = NULL;		//定义Thtree类型的指针W指向新建的结点的地址int i=0,				//定义int类型的变量i作为左右孩子树的标识j=0,				//定义int类型的变量j作为字符串遍历的指针top=-1;				//定义int类型的变量top作为结点数组的指针char E,R[Initsize];printf("请以括号法输入数据,并以此建立二叉树:");scanf_s("%s", R, Initsize);E = R[i];while (E != '\0') {switch (E) {case '(':top++;			 //入栈操作Q[top] = W;i = 1;			//对新结点做标识,1为左子树的标识break;case ',':i = 2;			//对新结点做标识,2为右子树的标识break;case ')':top--;			//出栈操作break;default:W = (ThreadTree*)malloc(sizeof(ThreadTree));		//新建结点W->data = E;					//更新结点的数据域data的指向W->rchild = W->lchild = NULL;if (A == NULL) {				//当传入的结点为空时,则新建的结点为树的根结点A = W;}else {switch (i) {					//判断传入的结点为左子树还是右子树case 1:Q[top]->lchild = W;			//将栈内的根结点的lchild指向新建的地址break;case 2:Q[top]->rchild = W;			//将栈内的根结点的rchild指向新建的地址break;}}}j++;E = R[j];}printf("构建线索二叉树对应的二叉树成功\n");
}void InitThTree(ThTree& A) {	//用于初始化线索二叉树A = NULL;printf("初始化线索二叉树成功\n");
}
http://www.yayakq.cn/news/731529/

相关文章:

  • 做网站维护的是什么人商丘做网站哪个好
  • 网站设计怎么做链接成都网站建设好的公司
  • 秦皇岛建设网站公司哪家好微信第三方做网站需要费用吗
  • 网站开发分销系统网站免费建站 图标
  • 怎么选择一家好的网站建设公司做设计需要知道的几个网站吗
  • 广饶网站建设中国建设报社网站
  • 中英文外贸网站模版沈阳男科医院哪家好点儿
  • 有没有做ppt很厉害的网站网页设计与制作实验报告总结
  • 东莞广告公司东莞网站建设价格网站 留言 以邮件形式
  • 网站源码下载后怎么用建一个网站大约需要花费多少钱
  • 山东住房与城乡建设网站怎么做网站策划的模板
  • 宝安做棋牌网站建设有哪些公司wordpress中文安装教程视频教程
  • 购物网站案例学习网站建设难吗
  • 织梦网站搬迁中学教材数字化学习资源的建设——教材配套网站的设计及发展趋势
  • 网站 邮件系统建设招标网络布线
  • 东莞建设网站推广公司地址广东网站建设哪家
  • 网站的优缺点宁波seo站外优化推广
  • 做设计网站的工作怎样在网上推广自己的产品
  • 厦门城乡住房建设厅网站网络营销方式创新
  • 模板网站建设咨询深圳网络工程公司
  • 360上做网站网页设计网站教程
  • 重庆联通的网站建设网站索引量
  • jsp网站建设项目实战电子版约软件免费的有哪些
  • 潍坊做网站联系方式和君咨询公司
  • 新建网站后域名跳转到别的网站了书店建设网站的能力
  • 做网站网站牟利200万判刑手机网站横向切换
  • 普通网站备案互联网开发是什么意思
  • 网易做的什么网站常州中小企业网站制作
  • 哪建网站好php网站模板
  • 怎样做单页微信网站连接ppt超链接网站怎么做