《按输入的关键字序列建立一棵二叉排序树-并删除该二叉排序树上的一个叶子结点(共3页).doc》由会员分享,可在线阅读,更多相关《按输入的关键字序列建立一棵二叉排序树-并删除该二叉排序树上的一个叶子结点(共3页).doc(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上题:二叉树采用二叉链表结构表示。设计并实现如下算法:按输入的关键字序列建立一棵二叉排序树,并删除该二叉排序树上的一个叶子结点。代码/* Note:Your choice is C IDE */*二叉树采用二叉链表结构表示。设计并实现如下算法:按输入的关键字序列建立一棵二叉排序树,并删除该二叉排序树上的一个叶子结点。*/#include stdio.h#include stdlib.htypedef int TELemType;typedef struct BiTNodeTELemType data;struct BiTNode *lchild,*rchild;BiTN
2、ode,*BiTree;int SearchBST(BiTree T,int key,BiTree f,BiTree *p)if(!T)*p=f;return 0;if(key=T-data)*p=T;return 1;if(keydata)return SearchBST(T-lchild,key,T,p);if(keyT-data)return SearchBST(T-rchild,key,T,p);return 0;void InsertBST(BiTree *T,int key)BiTree p,s;if(!SearchBST(*T,key,NULL,&p)s=(BiTree)mall
3、oc(sizeof(BiTNode);s-data=key;s-lchild=s-rchild=NULL;if(!p)*T=s;else if(keydata)p-lchild=s; else p-rchild=s;void NRPreOrder(BiTree bt)/*非递归先序遍历二叉树*/ BiTree stack100,p; int top; if (bt=NULL) return; top=0; p=bt; while(!(p=NULL&top=0) while(p!=NULL) printf(%3d,p-data); /*访问结点的数据域*/ if (toplchild; /*指针
4、指向p的左孩子*/ if (toprchild ; /*指针指向p的右孩子结点*/ int DeleteLeaf(BiTree *T)if(*T)-lchild=NULL&(*T)-rchild=NULL)*T=NULL;return 0;if(*T!=NULL)return DeleteLeaf(&(*T)-lchild);return DeleteLeaf(&(*T)-rchild);return 0;void main() BiTree T; int i; int key7=45,24,53,45,12,24,90; T=NULL; for(i=0;i7;i+) InsertBST(&T,keyi); NRPreOrder(T); DeleteLeaf(&T); printf(n); NRPreOrder(T);专心-专注-专业