资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
题:二叉树采用二叉链表结构表示。设计并实现如下算法:按输入的关键字序列建立一棵二叉排序树,并删除该二叉排序树上的一个叶子结点。代码/* Note:Your choice is C IDE */*二叉树采用二叉链表结构表示。设计并实现如下算法:按输入的关键字序列建立一棵二叉排序树,并删除该二叉排序树上的一个叶子结点。*/#include stdio.h#include stdlib.htypedef int TELemType;typedef struct BiTNodeTELemType data;struct BiTNode *lchild,*rchild;BiTNode,*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)malloc(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; /*指针指向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);
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号