最小树的算法关键是把最近的()结点连接到那些已接结点上去

题目
填空题
最小树的算法关键是把最近的()结点连接到那些已接结点上去
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A中的元素为非零整数,要求B、C表利用A表的结点)。


参考答案:
  B表的头结点使用原来A表的头结点,为C表新申请一个头结点。从A表的第一个结点开始,依次取其每个结点p,判断结点p的值是否小于0,利用前插法,将小于0的结点插入B表,大于等于0的结点插入C表。
  [算法描述]
  void DisCompose(LinkedList A)
  { B=A;
  B->next= NULL; ∥B表初始化
  C=new LNode;∥为C申请结点空间
  C->next=NULL; ∥C初始化为空表
  p=A->next; ∥p为工作指针
  while(p!= NULL)
  { r=p->next; ∥暂存p的后继
  if(p->data<0)
  {p->next=B->next; B->next=p; }∥将小于0的结点链入B表,前插法
  else {p->next=C->next; C->next=p; }∥将大于等于0的结点链入C表,前插法
  p=r;∥p指向新的待处理结点。
  }
  }

第2题:

在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是()。A.访问第i个结点(1<=i<=n)和求第i个结点

在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是()。

A.访问第i个结点(1<=i<=n)和求第i个结点的直接前驱(2<=i<=n)

B.在第i个结点之后插入一个新结点(1<=i<=n)

C.删除第i个结点(1<=i<=n)

D.将n个结点从小到大排序


正确答案:A

第3题:

在线性链表的插入算法中,若要把结点q插在结点P后面,下列操作正确的是:( )

A.使结点P指向结点q,再使结点q指向结点P的后件结点

B.使结点q指向P的后件结点,再使结点P指向结点q

C.使结点q指向结点P,再使结点P指向结点q的后件结点

D.使结点P指向q的后件结点,再使结点q指向结点P


正确答案:B
在修改结点指针域的操作中,有一个操作顺序的问题。比较选项A和B只是操作顺序颠倒了-下。A中先使结点p指向q后,q就成为P新的后件结点了,原先通过结点P指向的后件结点与结点P脱节了那么后面的-步操作没有任何意义的:使结点q指向P的后件结点即使结点q成为自己的后件结点。按照B指定的顺序操作就不会出现在引用结点p的指针域之前已经把它的值修改了的情形。至于C和D项是命题者设计的干扰项想让考生把P和(1的顺序搞混。
总结,做这种类型的试题,最好画图。插入结点:若结点p的后面是结点s,要在p和s之间插入结点q,-般先将结点q指向结点s,再将结点p指向q,顺序不能颠倒。删除结点:若结点p的后面是结点q.结点q的后面是结点s,若要删除结点q,只需将结点p指向结点s即可。

第4题:

在具有n个结点的单链表中,实现()的操作,其算法的时间复杂度都是O(n)。

A.遍历链表和求链表的第i个结点
B.在地址为P的结点之后插入一个结点
C.删除开始结点
D.删除地址为P的结点的后继结点

答案:A
解析:
A项,由于单链表是非随机存取的存储结构,遍历链表和求链表的第i个结点都必须从头指针出发寻找,其时间复杂度为0(n);B项,由于已知待插入结点的前驱结点,可以直接实现插入,其时间复杂度为0(1);CD两项,可以直接实现删除操作,其时间复杂度为O(1)。

第5题:

最小枝权树算法是从已接接点出发,把( )的接点连接上

A、最远

B、较远

C、最近

D、较近


参考答案C

第6题:

在具有n个结点的单链表中,实现()的操作,其算法的时间复杂度是O。

A.求链表的第i个结点

B.在地址为P的结点之后插入一个结点

C.删除表头结点

D.删除地址为P的结点的后继结点


正确答案:A

第7题:

设二叉树根结点的层次为0,对含有100个结点的二叉树,可能的最大树深和最小树深分别是______。


正确答案:99和6
99和6 解析:要使二叉树在规定结点下有最大树深,这时二叉树退化成一个线性链表,如果对应二叉树的根结点的层次为0,那么对应二叉树的树深为结点个数减1,即99;要使二叉树有最小树深,则此二叉树为满二叉树,当满二叉树的根结点的层次为1时,结点个数n和树深h之间的关系为:n=2h-1,所以当二叉树的根结点层次为0时,对应关系为n=2h+1

第8题:

已知p指向双向循环链表中的一个结点,其结点结构为data、prior、next三个域,写出算法change(p),交换p所指向的结点和它的前缀结点的顺序。


参考答案:
  知道双向循环链表中的一个结点,与前驱交换涉及到四个结点(p结点,前驱结点,前驱的前驱结点,后继结点)六条链。
  [算法描述]
  void Exchange(LinkedList p)
  ∥p是双向循环链表中的一个结点,本算法将p所指结点与其前驱结点交换。
  {q=p->llink;
  q->llink->rlink=p; ∥p的前驱的前驱之后继为p
  p->llink=q->llink; ∥p的前驱指向其前驱的前驱。
  q->rlink=p->rlink; ∥p的前驱的后继为p的后继。
  q->llink=p; ∥p与其前驱交换
  p->rlink->llink=q; ∥p的后继的前驱指向原p的前驱
  p->rlink=q; ∥p的后继指向其原来的前驱
  }∥算法exchange结束。

第9题:

设二叉树根结点的层次为0,对含有l00个结点的二叉树,可能的最大树深和最小树深分别是__________。


正确答案:
99和6

第10题:

下列是用头插法建立带头结点的且有n个结点的单向链表的算法,请在空格内填上适当的语句。
head=p;q=p;p->next=NULL;p->next=q->next;q->next=p

更多相关问题