广州做网站的价格,网站建设的小故事,设计公司展厅效果图,建设工程消防设计备案哪个网站设计并验证如下算法#xff1a;而擦函数采用二叉链表结构表示#xff0c;按输入的关键字序列建立一颗二叉排序树#xff0c;并删除该二叉排序树上的某个节点。
#includestdio.h
#includestdlib.h
#includestring.h
typedef int TElemType;
int m,n…设计并验证如下算法而擦函数采用二叉链表结构表示按输入的关键字序列建立一颗二叉排序树并删除该二叉排序树上的某个节点。
#includestdio.h
#includestdlib.h
#includestring.h
typedef int TElemType;
int m,n;
typedef struct BiTNode {//树节点的建立 TElemType data ;struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int SearchBST(BiTree T,int key,BiTree f,BiTree p){if(!T){pf;return 0;}else if(keyT-data){pT;return 1;}else if(keyT-data)return SearchBST(T-lchild,key,T,p);else return SearchBST(T-rchild,key,T,p);
}
int InsertBST(BiTree T,TElemType e){BiTree p,s;if(!SearchBST(T,e,NULL,p)){s(BiTree)malloc(sizeof(BiTNode));s-datae;s-lchilds-rchildNULL;if(!p)Ts;else if(ep-data)p-lchilds;elsep-rchilds;return 1;}elsereturn 0; }
int CeateBiTree(BiTree T)//创建树
{TElemType ch;TNULL;printf(请输入整数序列构建二叉排序树,以 0结束\n);scanf(%d,ch);while(ch!0){// printf(请输入整数序列构建二叉排序树,以 0结束\n);InsertBST(T,ch);printf(请输入整数序列构建二叉排序树,以 0结束\n);scanf(%d,ch);}
}
int Delete(BiTree p){BiTree q,s;if(!p-rchild){qp;pp-lchild;free(q);}else if(!p-lchild){qp;pp-rchild;free(q);}else{qp;sp-lchild;while(s-rchild){qs;ss-rchild;}p-datas-data;if(q!p)q-rchilds-lchild;elseq-lchilds-lchild;Delete(s);}return 1;}
int deleBiTreeData(BiTree T,TElemType key) {int flag1;if(!T)return 0;else{if(keyT-data){flag0;return Delete(T);}else if(keyT-data)return deleBiTreeData(T-lchild,key);elsereturn deleBiTreeData(T-rchild,key);}if(flag){printf(你要删除的结点值不存在\n);} }int PreOrder(BiTree BT) {//递归先序遍历 if(BT){if(!(BT-data))return 0;printf(%3d ,BT-data);PreOrder(BT-lchild) ;PreOrder(BT-rchild);return 1;}
}
int main(){BiTree BT;TElemType ch; CeateBiTree(BT);printf(创建二叉排序树的先序遍历\n);PreOrder(BT);printf(请输入你要删除的结点值\n);scanf(%d,ch) ;deleBiTreeData(BT, ch);printf(删除节点后二叉排序树的先序遍历\n);PreOrder(BT);}
测试结果如下
请输入整数序列构建二叉排序树,以 0结束
45
请输入整数序列构建二叉排序树,以 0结束
24
请输入整数序列构建二叉排序树,以 0结束
53
请输入整数序列构建二叉排序树,以 0结束
12
请输入整数序列构建二叉排序树,以 0结束
37
请输入整数序列构建二叉排序树,以 0结束
93
请输入整数序列构建二叉排序树,以 0结束
0
创建二叉排序树的先序遍历45 24 12 37 53 93 请输入你要删除的结点值
24
删除节点后二叉排序树的先序遍历45 12 37 53 93