标签:删除元素 位置 循环 stream std amp -- node 插入
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> using namespace std; typedef struct Bitnode { int data; struct Bitnode *lchild,*rchild; } Bitnode,*Bitree; int Searchtree(Bitree T,int num,Bitree F,Bitree &P) //在二叉树T种查找元素num F表示前驱 P表示num元素所在的节点 { if(T==NULL) //未找到该元素 { P=F; //p表示num元素应当在的位置的前驱 return 0; } else if(T->data==num) { P=T; return 1; } else if(T->data<=num) Searchtree(T->rchild,num,T,P); else Searchtree(T->lchild,num,T,P); } void print_in(Bitree &T) //中序遍历排序二叉树 { if(T!=NULL) { print_in(T->lchild); printf("%d ",T->data); print_in(T->rchild); } return; } void insertTree(Bitree &T,int num) //在二叉排序树T中插入元素NUM { Bitree P,s; int flag=Searchtree(T,num,NULL,P); if(flag==0) { s=(Bitree)malloc(sizeof(Bitnode)); s->data=num; s->lchild=NULL; s->rchild=NULL; if(T==NULL) T=s; else if(num<P->data) P->lchild=s; else P->rchild=s; } return; } void deletenode(Bitree &T) //删除该节点 { Bitree q,s; if(T->rchild==NULL) { q=T; T=T->lchild; free(q); } else if(T->lchild==NULL) { q=T; T=T->rchild; free(q); } else { q=T; s=q->lchild; while(s->rchild) { q=s; s=s->rchild; } T->data=s->data; if(T==q) //T=q 表示 while循环没有运行 T的左儿子的右子树没有节点 q->lchild=s->lchild; else q->rchild=s->lchild; free(s); } return; } void Deletetree(Bitree &T,int num) //在树种删除元素num { if(T==NULL) return; if(T->data<num) Deletetree(T->rchild,num); else if(T->data>num) Deletetree(T->lchild,num); else //找到同样的节点 删除节点操作 { // cout<<111<<endl; deletenode(T); } return; } int main() { int m,n,k; int a; Bitree T=NULL; Bitree q; int i,j; printf("输入n个元素和k次查找操作和m次删除操作:\n"); scanf("%d%d%d",&n,&k,&m); while(n--) { int num; scanf("%d",&num); insertTree(T,num); } printf("中序遍历结果\n"); print_in(T); cout<<endl; while(k--) { printf("请输入要查找的元素:\n"); scanf("%d",&a); int ans=Searchtree(T,a,NULL,q); cout<<ans<<endl; } while(m--) { printf("请输入要删除的元素:\n"); scanf("%d",&a); Deletetree(T,a); print_in(T); cout<<endl; } return 0; } 測试数据: 8 3 3 5 7 8 9 10 15 3 1 9 2 5 10 1 15
标签:删除元素 位置 循环 stream std amp -- node 插入
原文地址:http://www.cnblogs.com/clnchanpin/p/7086424.html