正在加载图片...
else if(p->data<key) while(p->data<key) p=p->next L sp=p: return p i//Search DSList 分析本题的平均查找长度与上一题相同,也是n3 9.31 int last=0, flag=1 int Is BsTree(Bitree T判断二叉树T是否二叉排序树是则返回1,否则返回0 if(T->lchild &&flag) Is Bs Tree(T->lchild) if(T>data<last)flg=0,∥与其中序前驱相比较 last=T->data if(T->rchild &&flag) Is BsTree(T->rchild) return flag: i//s BSTree 9.32 void malt Mingt( BiTree T, int x)找到二叉排序树T中小于x的最大元素和大 于x的最小元素 if(T-> Lchild) MaxLt MingT(I> Child.x);∥本算法仍是借助中序遍历来实现 if(last<x&&T->data=x)∥找到了小于x的最大元素 printf("a=%d\n",last) idas<=x&&T>data>x)/找到了大于x的最小元素 printf("b=%d n"T->data); last=T->data if(T->rchild) MaxLT MingT(T->rchild, x); i//MaxLT MingT 9.33 void Print nlt( BiTree T int x)从大到小输出二叉排序树T中所有不小于x的元 素 if(T->rchild)Print NLT(T->rchild, x)} else if(p->data<key) { while(p->data<key) p=p->next; L.sp=p; } return p; }//Search_DSList 分析:本题的平均查找长度与上一题相同,也是 n/3. 9.31 int last=0,flag=1; int Is_BSTree(Bitree T)//判断二叉树 T 是否二叉排序树,是则返回 1,否则返回 0 { if(T->lchild&&flag) Is_BSTree(T->lchild); if(T->data<last) flag=0; //与其中序前驱相比较 last=T->data; if(T->rchild&&flag) Is_BSTree(T->rchild); return flag; }//Is_BSTree 9.32 int last=0; void MaxLT_MinGT(BiTree T,int x)//找到二叉排序树 T 中小于 x 的最大元素和大 于 x 的最小元素 { if(T->lchild) MaxLT_MinGT(T->lchild,x); //本算法仍是借助中序遍历来实现 if(last<x&&T->data>=x) //找到了小于 x 的最大元素 printf("a=%d\n",last); if(last<=x&&T->data>x) //找到了大于 x 的最小元素 printf("b=%d\n",T->data); last=T->data; if(T->rchild) MaxLT_MinGT(T->rchild,x); }//MaxLT_MinGT 9.33 void Print_NLT(BiTree T,int x)//从大到小输出二叉排序树 T 中所有不小于 x 的元 素 { if(T->rchild) Print_NLT(T->rchild,x);
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有