1试编写判断二叉树是否为二叉排序树 (2) 2

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1试编写判断二叉树是否为二叉排序树Void is_but(BSTree bt)

{Btree p,pre,s[maxsize];

P=bt;

Int top=0;

Int x=minvol;

While(pl=null)||(top|=0))

{while(pl=num)

{

s[top]=p;

top=top+1;

p=p>|child;

}

If(top|=0)

{

top=top-1;

p=s[top];

if(x<=p->data) x=p->data; /*若非递减,则继续,否则结束*/

else return(false);

p=p->rchild;

}

}

return(true);

}

2假设有一个长度大于一的循环链表,在链表中删除指针s的指向的结点

int Del-LinkList(LinkList s)

{LinkList p=s;

While(p->next|=s)

P=p->next;

p->next=s->next;

return(1);

}

3求二叉树度为2的结点数,

Leaf-counter(Btree t)

{counter=0;

PseqStack S;

Btree p=t;

S=Init-SeqStack();

While(p||Iempty-SeqStack(S))

{

If(p)

{

Push-SeqStack(S,p);

p=p->|child;

}

else

{

Pop-SeqStack(S,p);

If((p=p->|child==null)&&(p->rchild==null))c ounter++;

P=p->rchild;

}

}

Return(ounter);

}

4已知线性表(a1,a2,a3...)吧所有负值元素移到左边。

V oid shift(int R[], int n)

{int low,high;

Low=0;high=n-1;

While(low

{ While((low

While((low

If(lowR[high];

}

}

5.求出链表中最大值的第一个结点的地址。Linklist findmax(linklist head)

{linklist p,q;

Datatype max;

If(head ==null) return(null);/*表为空,返回*/ q=head;

max=head->data;

P=head->next;

While(p|=null)

{

if(maxdata)

{max=p->data;

q=p;

}

P=p->next;

}

return(q);

}

6求二插链表结构二叉树度为一的节点数Int count(bintree *t)/*求二插链表结构二叉树t度为一的节点数*/

{

Int num1,num2;

If(t==NULL) return(0);

else

if((t->|child==NULL&&t->rchild!=NULL)||(t->1child!=NULL&&t->rchild==NULL)) return(1);

else

{

num1=count(t->1child);

num2=count(t->rchild);

return(num1+num2);

}

}

7二叉树T中查找只为x的算法。BinSTree BSTreeSearch(BinSTree t,KeyType X)/*二叉树中查找值为X的算法*/

BinStree q;

q=t;

While(t)

{ q=t;

If(t->key==X) /*查找成功*/

Return(t);

If(t->key<=X) t=t->1child; /*在左子树中查找*/

else t=t->rchild;/*在右子数中查找*/

}

return(t);

}

相关文档
最新文档