阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。 [说明] 二叉树的二叉链表存储结构描述如下: lypedef struct BiTNode { datatype data; street BiTNode *lchiht, *

admin2009-02-15  61

问题 阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。
[说明]
   二叉树的二叉链表存储结构描述如下:
lypedef struct BiTNode
{   datatype data;
   street BiTNode *lchiht, *rchild;   /*左右孩子指针*/ } BiTNode, *BiTree;
   下列函数基于上述存储结构,实现了二叉树的几项基本操作:
   (1) BiTree Creale(elemtype x, BiTree lbt, BiTree rbt):建立并返回生成一棵以x为根结点的数据域值,以lbt和rbt为左右子树的二叉树;
   (2) BiTree InsertL(BiTree bt, elemtype x, BiTree parent):在二叉树bt中结点parent的左子树插入结点数据元素x;
   (3) BiTree DeleteL(BiTree bt, BiTree parent):在二叉树bt中删除结点parent的左子树,删除成功时返回根结点指针,否则返回空指针;
   (4) frceAll(BiTree p):释放二叉树全体结点空间。
[函数]
BiTree Create(elemtype x, BiTree lbt, BiTree rbt) {   BiTree  p;
   if ((p = (BiTNode *)malloc(sizeof(BiTNode)))= =NULL) return NULL;
   p->data=x;
   p->lchild=lbt;
   p->rchild=rbt;
     (1);
}
BiTree InsertL(BiTree bt, elemtype x,BiTree parent)
{   BiTree  p;
   if (parent= =NULL)  return NULL;
   if ((p=(BiTNode *)malloc(sizeof(BiTNode)))= =NULL) return NULL;
   p->data=x;
   p->lchild=  (2);
   p->rchild=  (2);
   if(parent->lchild= =NULL)  (3);
   else{
         p->lchild=(4);
         parent->lchild=p;
   }
   return bt;
}
BiTree DeleteL(BiTree bt, BiTree parent)
{   BiTree p;
   if (parent= =NULL||parent->lchild= =NULL) return NULL;
   p= parent->lchild;
   parent->lchild=NULL;
   freeAll((5));
   return bt;

选项

答案(1) return p (2) NULL (3) parent->lchild=p (4) parent->lchild (5) p

解析 (1)此处应返回新建的二叉树;(2)新元素结点初始化时,数据域取值x,左右孩子指针指向NULL;
(3)若parent结点的左孩子结点空,则直接令其左孩子指针指向p;
(4)若parent结点的左孩子结点不空,则让新结点p充当其左子树的根;
(5)此处需释放二叉树p(parent的左子树)所占用的空间。
转载请注明原文地址:https://jikaoti.com/ti/JTW7FFFM
0

最新回复(0)