java中的递归算法(用JAVA语言实现二叉树的层次遍历的非递归算法及查找算法。

分块查找

java中的递归算法(用JAVA语言实现二叉树的层次遍历的非递归算法及查找算法。

typedef struct

java中的递归算法(用JAVA语言实现二叉树的层次遍历的非递归算法及查找算法。

{ int key;

int link;

}SD;

typedef struct

{ int key;

float info;

}JD;

int blocksrch(JD r[],SD nd[],int b,int k,int n)

{ int i=1,j;

while((k>nd[i].key)&&(i<=b) i++;

if(i>b) { printf(\"\\nNot found\");

return(0);

}

j=nd[i].link;

while((j<n)&&(k!=r[j].key)&&(r[j].key<=nd[i].key))

j++;

if(k!=r[j].key) { j=0; printf(\"\\nNot found\"); }

return(j);

}

哈希查找算法实现

#define M 100

int h(int k)

{ return(k%97);

}

int slbxxcz(int t[],int k)

{ int i,j=0;

i=h(k);

while((j<M)&&(t[(i+j)%M]!=k)&&(t[(i+j}%M]!=0))

j++;

i=(i+j)%M;

if(t[i]==k) return(i);

else return(-1);

}

int slbxxcr(int t[],int k)

{ int i,j=0;

i=h(k);

while((j<M)&&(t[(i+j)%M]!=k)&&(t[(i+j}%M]>0))

j++;

if(j==M) return(0);

i=(i+j)%M;

if(t[i]<=0)

{ t[i]=k; return(1); }

if(t[i]==k) return(1);

}

int slbxxsc(int t[],int k)

{ int i,j=0;

i=h(k);

while((j<M)&&(t[(i+j)%M]!=k)&&(t[(i+j}%M]!=0))

j++;

i=(i+j)%M;

if(t[i]==k)

{ t[i]=-1; return(1); }

return(0);

}

顺序查找

#define M 500

typedef struct

{ int key;

float info;

}JD;

int seqsrch(JD r[],int n,int k)

{ int i=n;

r[0].key=k;

while(r[i].key!=k)

i--;

return(i);

}

折半查找

int binsrch(JD r[],int n,int k)

{ int low,high,mid,found;

low=1; high=n; found=0;

while((low<=high)&&(found==0))

{ mid=(low+high)/2;

if(k>r[mid].key) low=mid+1;

else if(k==r[mid].key) found=1;

else high=mid-1;

}

if(found==1)

return(mid);

else

return(0);

}

虽然都是C++写的java中的递归算法,万变不离其中,JAVA我现在 刚学习,就不献丑了

非递归算法void inorder(JD *bt){ int i=0; JD *p,*s[M]; p=bt; do { while(p!=NULL) { s[i++]=p; p=p->lchild; } if(i>0) { p=s[--i]; printf(\"%d\\t\",p->data); p=p->rchild; } }while(i>0||p!=NULL);}