如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
二叉树得各种算法、txt男人得承诺就像80岁老太太得牙齿,很少有真得。您嗜烟成性得时候,只有三种人会高兴,医生您得仇人和卖香烟得。/*用函数实现如下二叉排序树算法:(1)插入新结点(2)前序、中序、后序遍历二叉树(3)中序遍历得非递归算法(4)层次遍历二叉树(5)在二叉树中查找给定关键字(函数返回值为成功1,失败0)(6)交换各结点得左右子树(7)求二叉树得深度(8)叶子结点数Input第一行:准备建树得结点个数n第二行:输入n个整数,用空格分隔第三行:输入待查找得关键字第四行:输入待查找得关键字第五行:输入待插入得关键字Output第一行:二叉树得先序遍历序列第二行:二叉树得中序遍历序列第三行:二叉树得后序遍历序列第四行:查找结果第五行:查找结果第六行~第八行:插入新结点后得二叉树得先、中、序遍历序列第九行:插入新结点后得二叉树得中序遍历序列(非递归算法)第十行:插入新结点后得二叉树得层次遍历序列第十一行~第十三行:第一次交换各结点得左右子树后得先、中、后序遍历序列第十四行~第十六行:第二次交换各结点得左右子树后得先、中、后序遍历序列第十七行:二叉树得深度第十八行:叶子结点数*/#include"stdio、h"#include"malloc、h"#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2typedefintStatus;typedefintKeyType;#defineSTACK_INIT_SIZE100//存储空间初始分配量#defineSTACKINCREMENT10//存储空间分配增量#defineMAXQSIZE100typedefintElemType;typedefstructBiTNode{ElemTypedata;structBiTNode*lchild,*rchild;//左右孩子指针}BiTNode,*BiTree;StatusSearchBST(BiTreeT,KeyTypekey,BiTreef,BiTree&p){if(!T){p=f;returnFALSE;}elseif(key==T->data){p=T;returnTRUE;}elseif(key<T->data)returnSearchBST(T->lchild,key,T,p);elsereturn(SearchBST(T->rchild,key,T,p));}StatusInsertBST(BiTree&T,ElemTypee){BiTrees,p;if(!SearchBST(T,e,NULL,p)){s=(BiTree)malloc(sizeof(BiTNode));s->data=e;s->lchild=s->rchild=NULL;if(!p)T=s;elseif(e<p->data)p->lchild=s;elsep->rchild=s;returnTRUE;}elsereturnFALSE;}StatusPrintElement(ElemTypee){//输出元素e得值printf("%d",e);returnOK;}//PrintElementStatusPreOrderTraverse(BiTreeT,Status(*Visit)(ElemType)){//前序遍历二叉树T得递归算法,对每个数据元素调用函数Visit。//补全代码,可用多个语句if(T){if(Visit(T->data))if(PreOrderTraverse(T->lchild,Visit))if(PreOrderTraverse(T->rchild,Visit))returnOK;returnERROR;}elsereturnOK;}//PreOrderTraverseStatusInOrderTraverse(BiTreeT,Status(*Visit)(ElemType)){//中序遍历二叉树T得递归算法,对每个数据元素调用函数Visit。//补全代码,可用多个语句if(T){if(InOrderTraverse(T->lchild,Visit))if(Visit(T->data))if(InOrderTraverse(T->rchild,Visit))returnOK;returnERROR;}elsereturnOK;}//InOrderTraverseStatusP