- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
二叉树得各种算法、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-2
typedefintStatus;
typedefintKeyType;
#defineSTACK_INIT_SIZE100//存储空间初始分配量
#defineSTACKINCREMENT10//存储空间分配增量
#defineMAXQSIZE100
typedefintElemType;
typedefstructBiTNode{
ElemTypedata;
structBiTNode*lchild,*rchild;//左右孩子指针
}BiTNode,*BiTree;
StatusSearchBST(BiTreeT,KeyTypekey,BiTreef,BiTreep)
{
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(ep-data)p-〉lchild=s;
elsep—〉rchild=s;
? returnTRUE;
?}
elsereturnFALSE;
}
StatusPrintElement(ElemTypee){//输出元素e得值
printf("%d”,e);
returnOK;
}//PrintElement
StatusPreOrderTraverse(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;
}//PreOrderTraverse
StatusInOrderTraverse(BiTreeT,Status(*Visit)(ElemType))
{
//中序遍历二叉树T得递归算法,对每个数据元素调用函数Visit.
//补全代码,可用多个语句
?if
文档评论(0)