正在加载图片...
if(T->data<x) exito,∥当遇到小于x的元素时立即结束运行 printf("%d n",T->data); f(T> lchild) Print Nlt(I> Child,x,∥先右后左的中序遍历 3//Print NLT 9.34 void delete nlt( BiTree&T,ntx删除二叉排序树T中所有不小于x元素结点, 并释放空间 mT ->rchild) Delete nLT(T->rchild, x) data<x) exitO,∥当遇到小于x的元素时立即结束运行 T=T->lchild free(q,∥如果树根不小于x,则删除树根,并以左子树的根作为新的树根 f( T Delete NLT(I,x),∥继续在左子树中执行算法 i//Delete NLT 9.35 void Print Between (BiThr Tree T, int a, int b)/打印输出后继线索二叉排序树T中所 有大于a且小于b的元素 while(lp->ltag)p=p> Child;/找到最小元素 while(p&&p->data<b) ifp->data>a) printf("%odn"p->data)/输出符合条件的元素 if(p->rtag)p=p->rtag: p=p->rchild while(p->ltag) p=p->Child }/转到中序后继 i//while 3//Print Between 936 void BSTree Insert Key( BiThr Tree& Tint x)/在后继线索二叉排序树T中插入元 素 if(T> datas)/插入到右侧 (T>rag)/T没有右子树时作为右孩子插入if(T->data<x) exit(); //当遇到小于 x 的元素时立即结束运行 printf("%d\n",T->data); if(T->lchild) Print_NLT(T->lchild,x); //先右后左的中序遍历 }//Print_NLT 9.34 void Delete_NLT(BiTree &T,int x)//删除二叉排序树 T 中所有不小于 x 元素结点, 并释放空间 { if(T->rchild) Delete_NLT(T->rchild,x); if(T->data<x) exit(); //当遇到小于 x 的元素时立即结束运行 q=T; T=T->lchild; free(q); //如果树根不小于 x,则删除树根,并以左子树的根作为新的树根 if(T) Delete_NLT(T,x); //继续在左子树中执行算法 }//Delete_NLT 9.35 void Print_Between(BiThrTree T,int a,int b)//打印输出后继线索二叉排序树 T 中所 有大于 a 且小于 b 的元素 { p=T; while(!p->ltag) p=p->lchild; //找到最小元素 while(p&&p->data<b) { if(p->data>a) printf("%d\n",p->data); //输出符合条件的元素 if(p->rtag) p=p->rtag; else { p=p->rchild; while(!p->ltag) p=p->lchild; } //转到中序后继 }//while }//Print_Between 9.36 void BSTree_Insert_Key(BiThrTree &T,int x)//在后继线索二叉排序树 T 中插入元 素 x { if(T->data<x) //插入到右侧 { if(T->rtag) //T 没有右子树时,作为右孩子插入
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有