三九宝宝网宝宝百科宝宝知识

二叉树叉入一个节点程序

01月03日 编辑 39baobao.com

[火车集装箱运输程序及运费]集装箱分为两种: 铁路集装箱:按箱型分为:1t、10t、20英尺箱40英尺。 自备集装箱:分为通用集装箱和专用集装箱,按箱型分为:1t、10t、20英尺、40英尺箱。 集装箱货物运输费用的计算...+阅读

不知道你是什么语言,不过思路相似,希望对你有帮助// erchashu.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include#include#include#define NULL 0 #define MAXlevel 10 typedef struct BiTNode { char data[20]; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; /*用递归法建立二叉树*/ BiTree Create(BiTree T) { char ch[20]; scanf("%s",ch); if(ch[0]==35) T=NULL; /*用#表示某结点的左右子树是否为空,用于表示该结点是否为叶子或者可能存在左子树or右子树*/ else { if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) printf("Error!"); strcpy(T->data,ch); /*输入T的data的值*/ T->lchild=Create(T->lchild); T->rchild=Create(T->rchild); } /*用先序的方法依次输入二叉树的结点的data值*/ return T; } void ShowTree(BiTree T,int deep) /*凹入表示法输出二叉树T,deep用于分层显示各节点的关系*/ { deep++; int i; if(T==NULL)return ; /*递归结束*/ printf("\n%s ",T->data); for(i=0;ilchild,deep); /*打印左子树*/ ShowTree(T->rchild,deep); /*打印右子树*/ } void Preorder(BiTree T) { if(T) { printf(" %s",T->data); /*输出根节点*/ Preorder(T->lchild); Preorder(T->rchild); } /*先序遍历*/ } void zhongxu(BiTree T) { if(T){ zhongxu(T->lchild); printf(" %s",T->data); /*递归左子树之后输出根节点*/ zhongxu(T->rchild); } } /*中序遍历*/ void houxu(BiTree T) { if(T) { houxu(T->lchild); houxu(T->rchild); printf(" %s",T->data); /*与先序遍历相反最后输出根节点*/ } } /*后序遍历*/ void Levelorder(BiTree T) /*模拟队列先进先出的特点层次遍历二叉树*/ { BiTNode *Queue[20],*b; /*定义结点的指针数组*/ int front,rear; front=rear=0; if (T) { Queue[rear++]=T; /*Queue[0]指向T,置rear=1*/ while (front!=rear) { b=Queue[front++]; /*b通过循环依次指向Queue[0],Queue[1],..*/ printf(" %s",b->data); if(b->lchild!=NULL) Queue[rear++]=b->lchild; /*通过循环将Queue[2*i+1](i=0,1,...),依次指向根结点的左子树、左子树的左子树...*/ if(b->rchild!=NULL) Queue[rear++]=b->rchild; /*通过循环将Queue[2*i+1](i=0,1,...),依次指向根结点的左子树、左子树的左子树...*/ } } } /*层次遍历*/ void exchange(BiTree rt)/*交换二叉树的所有子树*/ { BiTree temp = NULL; if(rt->lchild == NULL & rt->rchild == NULL) return; /*若二叉树的左右子树均为空则返回*/ else { temp = rt->lchild; rt->lchild = rt->rchild; rt->rchild = temp; } /*交换子树*/ if(rt->lchild)exchange(rt->lchild); if(rt->rchild)exchange(rt->rchild); /*对二叉树的左右子树分别交换*/ } /*交换该二叉树所有子树*/ int DestroyBiTree(BiTree &T) /*删除二叉树T*/ { if (T==NULL) return 1; /*当T为空的时候递归结束*/ DestroyBiTree(T->lchild); DestroyBiTree(T->rchild); /*对左右子树进行操作*/ delete T; T = NULL; /*删除并将T置为空*/ return 1; } /*删除二叉树T*/ void findx(BiTree &T,char *ch) { if(strcmp(T->data,ch)==0)DestroyBiTree(T); /*判断树根的内容是否与字符串ch相同相同则删除整棵树*/ else if(T) { if(strcmp(T->lchild->data,ch)==0) /*判断其左孩子的内容是否与字符串ch相同*/ { DestroyBiTree(T->lchild); T->lchild =NULL; return ; /*若相同则删去其左孩子及其子树然后将其双亲指向该结点的指针置空而后返回*/ } if(strcmp(T->rchild->data,ch)==0) { DestroyBiTree(T->rchild); T->rchild =NULL; return ; /*判断其左孩子的内容是否与字符串ch相同,若相同则删去其左孩子及其子树然后将其双亲指向该结点的指针置空而后返回*/ } } else { findx(T->lchild,ch); findx(T->rchild,ch); /*递归对其左右子树进行相同操作*/ } } /*删除所输入结点及其子树*/ void main(){ char jiedian[20]; BiTree T; int sum,dep; T=Create(T); printf("\n该树按照凹入表示法表示为:"); ShowTree(T,0); /*用凹入表示法打印该树*/ printf("\n\n该树的先序遍历序列为:\n"); Preorder(T); /*输出该树的先序遍历*/ printf("\n该树的中序遍历序列为:\n"); zhongxu(T); /*输出该树的中序遍历*/ printf("\n该树的后序遍历序列为:\n"); houxu(T); /*输出该树的后序遍历*/ printf("\n该树的层次遍历序列为\n"); Levelorder(T); printf("\n\n交换左右子树后的树按照凹入表示法表示为:"); exchange(T); ShowTree(T,0); /*用凹入表示法打印交换所有子树后的得到树*/ printf("\n请输入待删除结点内容:\n"); scanf("%s",jiedian); findx(T,jiedian); /*删除所输入结点及其子树*/ printf("删除所输入结点及其子树后的二叉树用凹入法表示为:"); ShowTree(T,0); /*用凹入法表示法输出删除所要求结点及其子树之后的二叉树*/ printf("\n"); }

以下为关联文档:

集装箱货运站操作程序是什么一、拆箱交货业务 拆箱交货时,货物集散型的内陆港口站,在货运进口货运中的主要业务与要求一般为: 1.做好交货准备工作 集装箱货运站在船舶抵港前,应从船公司或船代处获得有关单...

集装箱货运进出口程序一、进出口货运程序 1.订舱 发货人或货物托运人根据贸易合同或信用证有关条款的规定,在货物托运前一定的时间,填制订舱单向船公司或其代理人,或其他运输经营人申请订舱。 2.接...

怎么样在VC程序中添加帮助文件 chm文件而在调用这个函数之前,还需要在你的工程中加上 HtmlH elp 的库文件和头文件: 1. 指定 HtmlHelp.h 的路径。 选择菜单“Project ->Settings...”,打开“Project Settings”对话...

通过阿尔伯特省留学生移民省提名还要经过哪些程序才能移民成功阿省(AB)省提名留学生移民项目简介 1. 阿省留学生转移民的条件: 证明有永久定居阿省的意向(注:除了签署固定的声明表外,可以提供辅助性的说明文件) 获得加拿大其他省份或者阿省的公...

学完了C和C想学Windows编程但 windows程序设计第5你现在最大的问题是。没有把全部精力放在学习上,你的精力被那些很难读懂的新东西分散了.C++最恶心的地方就是入门太难,你要想学C++的MFC 就不得不硬着头皮看那些难懂的东西....

幼儿园制作美篇用什么文字程序以下为举例: 1、手工被广泛地应用于幼儿园教育的各个领域。 2、观察、感受、操作是幼儿认识客观世界的基本要素。 3、对大班幼儿不仅要看操作过程还要权衡操作结果,即作品评价...

房产赠予都有什么程序一、房屋赠与: 房产赠与是指一方(赠与人)自愿把自己所有的房屋无偿赠与他人(受赠人),他人愿意接受的民事法律行为。房屋赠与的双方当事人应签订书面合同。 二、赠与产生的税费: 1、...

如何学习写程序设计文档程序设计文档,要注意简洁和逻辑性,需要明确的是:文档并不是进行设计的目标,也不是设计过程中额外的工作。具体模块和步骤为: 1.需求分析 需求分析的结果通常需要使用需求说明文...

入党流程时间节点第一阶段:入党申请人。不管你是在校学生,还是已经踏上工作岗位的职业精英,或者是在家务农的农牧民,只要你提交了入党申请书,这一阶段统称为入党申请人。需要注意的是申请人必须年...

推荐阅读
图文推荐