还剩2页未读,继续阅读
文本内容:
查找实验答案实验public class10_1{EPSINON=static finaldouble
0.0000000001;static doublesqrt2{值的区间/72double low=
1.4,high=
1.5;double mid=low+high/2;//折半查找EPSINON{while high-lowif mid*mid2//高区间查找low=mid;else//低区间查找high=mid;mid=low+high/2;return mid;public staticvoid mainString[]args{class BSTNode//二叉排序树结点类public int key;int size;//存放关键字,假设关键字为类型int ent;intpublic BSTNodeIchild;public//以这个结点为根的子树中结点个数BSTNode rchild;BSTNode//相同关键字出现次数Ichild=rchild=null;size//存放左孩子指针=ent=1;//存放右孩子指针}//构造方法class BSTClass{public BSTNoder;publicBSTClassr=null;//二叉排序树类public voidInsertBST int k//二叉排序树根结点//构造方法//插入一个关键字为的结点k・sqrt2;System.out printfsqrt2=%.lOf\n rInsertBSTl r,k;//求结点的private intgetsizeBSTNode pp sizeif p==null return0;elsereturn p.size;//在以为根的中插入关键p BSTprivateBSTNode InsertBSTlBSTNode p,int k字为的结点k{//原树为空,新插入的元素为根结点ifp==nullp=new BSTNode;p.key=k;}else if k==p.key{・p cnt++;}else ifkp.key//插入到的左子树中pp.Ichild=InsertBSTl p.Ichild,k;else ifkp.key//插入到的右子树中pp.rchild=InsertBSTl p.rchild,k;//维护结点pp.size=getsize p.Ichild+getsize p.rchild+的值sizereturn p;//创建根结点r=new BSTNode;r•key=a
[0];//创建其他结点for inti=1;ia.length;i++//由关键字序列创建一棵二叉排序树apublic voidCreateBST int[]a//插入关键字InsertBSTlra[i];z//求关键字的名次k publicint Rankintk//在结点的子p returnRanklr,k;private intRankl BSTNodep,intk树中求关键字的名次kif p==null return0;//找到关键字为的结点kif k==p.keyreturn getsizep.Ichild+1;ifkp.key returnRanklp.Ichild,k;else//输出二叉排序树的括号表示串public voidDispBST returnRanklp.rchild,k+getsizep.Ichild+p.ent;DispBSTl r;//被方法调用DispBSTprivate voidDispBSTlBSTNode pifp!=null{HSystem.out.printp.key++p.size++p.ent+];//输出根结点值out.//有孩子结点时才输出〃n nSystem.print;//递归处理左子树DispBSTlp.Ichild;ifp.rchild!=null//有右孩子结点时才输出「System.out.print//递归处理右子树DispBSTlp.rchild;out.System.printn;//有孩子结点时才输出〃p.Ichild!=null||p.rchild!=null{实验public class10_2{public staticvoid mainString[]args{int[]a={3,5,4,6,6,5,1,3};BSTClass bt=new BSTClass;bt,CreateBST a;System.out.printin;u HSystem.out.printBST:;bt.DispBST;outSystem..printin;TreeSetInteger s=new TreeSet;//米用集合去重TreeSetfor inti=0;ia.length;i++・s adda[i];求解结果;nSystem.out.printin forInteger e:s+”的名次是”+n㊀System,out.printin”+bt.Rank e;。