判断线索二叉树中*p结点为叶子结点的条件是p->ltag==1 p->rtag==1。

判断线索二叉树中*p结点为叶子结点的条件是p->ltag==1 && p->rtag==1。


参考答案和解析
C

相关考题:

●试题三阅读下列函数说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。【函数3说明】函数DeleteNode(Bitree*r,int e)的功能是:在树根结点指针为r的二叉查找(排序)树上删除键值为e的结点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树结点的类型定义为:typedef struct Tnode{int data;/*结点的键值*/struct Tnode*Lchild,*Rchild;/*指向左、右子树的指针*/}*Bitree;在二叉查找树上删除一个结点时,要考虑三种情况:①若待删除的结点p是叶子结点,则直接删除该结点;②若待删除的结点p只有一个子结点,则将这个子结点与待删除结点的父结点直接连接,然后删除结点p;③若待删除的结点p有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点s ,用结点s的值代替结点p的值,然后删除结点s,结点s必属于上述①、②情况之一。【函数3】int DeleteNode(Bitree*r,int e){Bitree p=*r,pp,s,c;while( (1) ){/*从树根结点出发查找键值为e的结点*/pp=p;if(e<p->data)p=p->Lchild;else p=p->Rchild;}if(!p)return-1;/*查找失败*/if(p->Lchild p->Rchild) { /*处理情况③*/s= (2) ;pp=p;while( (3) ){pp=s;s=s->Rchild;}p->data=s->data;p=s;}/*处理情况①、②*/if( (4) )c=p->Lchild;else c=p->Rchild;if(p==*r)*r=c;else if( (5) )pp->Lchild=c;else pp->Rchild=c;free(p);return 0;}

阅读下列C函数和函数说明,将应填入(n)处的字句写在对应栏内。【说明】函数DeleteNode (Bitree *r, int e)的功能是:在树根结点指针为r的二叉查找(排序)树上删除键值为e的结点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树结点的类型定义为:typedef struct Tnode{int data; /*结点的键值*/struct Tnode *Lchild, *Rchild; /*指向左、右子树的指针*/}*Bitree:在二叉查找树上删除一个结点时,要考虑3种情况:①若待删除的结点p是叶子结点,则直接删除该结点;②若待删除的结点p只有一个子结点,则将这个子结点与待删除结点的父结点直接连接,然后删除结点p;③若待删除的结点p有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点s,用结点s的值代替结点p的值,然后删除结点s,结点s必属于上述①、②情况之一。【函数】int DeleteNode (Bitree *r,int e) {Bitree p=*r,pp,s,c;while ( (1) ){ /*从树根结点出发查找键值为e的结点*/pp=p;if(e<p->data) p=p->Lchild;else p=p->Rchild;}if(!P) return-1; /*查找失败*/if(p->Lchild p->Rchild) {/*处理情况③*/s=(2);pp=pwhile (3) {pp=s;s=s->Rchild;}p->data=s->data; p=s;}/*处理情况①、②*/if ( (4) ) c=p->Lchild;else c=p->Rchild;if(p==*r) *r=c;else if ( (5) ) pp->Lchild=c;else pp->Rchild=c;free (p);return 0;}

判断线索二叉树中某结点p有左子女的条件是()。A、p!=NULLB、p->lchilD!=NULLC、p->ltaG==0D、p->ltaG==1

在单链表中,指针p指向元素为x的结点,实现删除x节点的后继结点的语句是()。 A、p=p->next;B、p->next=p->next->next;C、p->next=p;D、p->next->next=p->next->next->next;

在一个单链表中,若删除p所指向结点的后续结点,则执行()。 A、p->next=p->next->next;B、p->next=p->next;C、p=p->next;D、p=p->next->next;

阅读下列函数说明和C函数,将应填入(n)处。【函数3说明】函数DeleteNode(Bitree * r,int e)的功能是:在树根结点指针为r的二叉查找(排序)树上删除键值为e的结点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树结点的类型定义为:typedef struct Tnode{int data; /*结点的键值*/struct Tnode * Lchild,*Rchild; /*指向左、右子树的指针*/} * Bitree;在二叉查找树上删除一个结点时,要考虑三种情况:①若待删除的结点p是叶子结点,则直接删除该结点;②若待删除的结点p只有一个子结点,则将这个子结点与待删除结点的父结点直接连接,然后删除结点P;③若待删除的结点p有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点s,用结点s的值代替结点p的值,然后删除结点s,结点s必属于上述①、②情况之一。【函数3】int DeleteNode(Bitree * r,int e){Bitree p=*r,pp,s,c;while((1)){ /*从树根结点出发查找键值为e的结点*/pp=p;if(e<p->data)p=p->Lchild;else p=p->Rchild;{if(!p)return-1; /*查找失败*/if(p->Lchild p->Rchild){/*处理情况③*/s=(2); pp=p;while((3)){pp=s;s=s->Rchild;}p->data=s->data;p=s;}/*处理情况①、②*/if((4))c=p->Lchild;else c=p->Rchild;if(p==*r)*r=c;else if((5))pp->Lchild=c;else pp->Rchild=c;free(p);return 0;}

线性链表中结点的结构为(data,next)。已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行下列()操作。A.s->next=p;p->next=s;B.s->next=p->next;p->next=s;C.s->next=p->next;p=s;D.p->next=s;s->next=p;

阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明]完成以下中序线索化二叉树的算法。[函数]Typedef int datatype;Typedef struct node {Int ltag, rtag;Datatype data;*lchild,* rchild;}bithptr;bithptr pre;void inthread ( p );{if{inthread ( p->lchild );if ( p->lchild==unll ) (1);if ( P->RCHILD=NULL) p->rtag=1;if (2){if (3) pre->rchild=p;if ( p->1tag==1 )(4);}INTHREAD ( P->RCHILD );(5);}}

设单链表中结点的结构为已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行下列哪一个操作______。A.s->link=p;p->link=s;B.s->link=p->link;p->link=s;C.s->link=p->link;p=s;D.p->link=s;s->link=p;

设指针变量p指向单链表中的结点A,则删去结点A的语句序列为 Q=p->next;p->data = p->data: p->next=(); :feee(q);

在一个单链表中,若要删除P结点的后续结点,则应执行()。A.P->next=P->next->nextB.p=P->next;P->next=P->next->nextC.delete(P->next)D.p=P->next->next

线索二叉树中某结点R没有左孩子的充要条件是()。A.R.ltag=1B.R.rchild=NULLC.R.lchild=NULLD.R.ltag=0

在一个单链表中,若p所指的结点不是最后结点,则删除p所指的结点的后继结点的正确操作是()。A.p=p->nextB.p->next=p->nextC.p->next=p->next->nextD.p->next=p

线索化的二叉树中,某结点*P没有孩子的充要条件是()。A.p->lchild=NULLB.p->ltag=l&&p->rtag=1C.p->ltag=0D.p->lchild=NULL&&p->ltag=1

在一个带头结点的循环双向链表中,若要删除指针p所指向的结点则执行()嗓作。A、p = p->prior;p->prior->next = p->nextB、p->prior->next = p;p->next = p->next->priorC、p->next->prior = p;p->next = p->next->nextD、p->prior->next = p->next;p->next->prior = p->prior

判断线索二叉树中某结点P有左孩子的条件是__(1)__。若由森林转化得到的二叉树是非空的二叉树,则二叉树形状是__(2)__。空白(1)处应选择()A、P!=nullB、P-lchild!=nullC、P-ltag=0D、P-ltag=1

己知指针p指向单链表中的某结点,则下列各组语句能删除链表中结点的是()A、p=p->nextB、q=p->next;q=q->nextC、p->next = p-next->nextD、q=p->next;p=p->next;q=p->next

已知单链表上一结点的指针为p,则删除该结点后继的正确操作语句是:()A、 s= p->next; p=p->next;  free(s);B、 p=p->next;  free(p);C、 s= p->next; p->next=s->next;  free(s);D、 p=p->next;  free(p->next);

已知单链表上一结点的指针为p,则在该结点之后插入新结点*s的正确操作语句为()A、 p->next=s; s->next=p-next;B、 s->next=p->next; p->next=s;C、 p->next=s; p->next=s->next;D、 p->next=s->next; p->next=s;

线索二叉树中,结点p没有左子树的充要条件是()A、p->lc=NULLB、p->ltag=1C、p->ltag=1且p->lc=NULLD、以上都不对

在一个单链表中,若要删除p指针所指向结点的后继结点,则执行()A、p->next=pB、p=p->next->nextC、p->next=p->next->nextD、p=p->next;p->next=p->next->next

已知指针p指向单链表中某一结点,将新生成的由s所指结点加到p所指结点之后,其语句应为()。A、s->next=p->next;p-next=s;B、(*p).next=s;(*s).next=(*p).next;C、s->next=p->next;p->next=s->next;D、s->next=p+1; p->next=s;

单选题判断线索二叉树中某结点P有左孩子的条件是__(1)__。若由森林转化得到的二叉树是非空的二叉树,则二叉树形状是__(2)__。空白(1)处应选择()AP!=nullBP-lchild!=nullCP-ltag=0DP-ltag=1

单选题在单链表中,要将s所指结点插入到p所指结点之后,其语句应为()。As->next=p+1; p->next=s;B(*p).next=s; (*s).next=(*p).next;Cs-next=p->next; p->next=s->next;Ds-next=p->next; p->next=s;

单选题已知单链表上一结点的指针为p,则删除该结点后继的正确操作语句是:()A s= p->next; p=p->next;  free(s);B p=p->next;  free(p);C s= p->next; p->next=s->next;  free(s);D p=p->next;  free(p->next);

单选题已知单链表上一结点的指针为p,则在该结点之后插入新结点*s的正确操作语句为()A p->next=s; s->next=p-next;B s->next=p->next; p->next=s;C p->next=s; p->next=s->next;D p->next=s->next; p->next=s;

单选题线索二叉树中,结点p没有左子树的充要条件是()Ap->lc=NULLBp->ltag=1Cp->ltag=1且p->lc=NULLD以上都不对

单选题己知指针p指向单链表中的某结点,则下列各组语句能删除链表中结点的是()Ap=p->nextBq=p->next;q=q->nextCp->next = p-next->nextDq=p->next;p=p->next;q=p->next