阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。 [说明] 一棵非空二叉树中“最左下”结点定义为:若树根的左子树为空,则树根为“最左下”结点:否则,从树根的左子树根出发,沿结点的左孩子分支向下查找,直到某个结点不存在左孩子时为止

admin2010-01-15  36

问题 阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。
   [说明]
一棵非空二叉树中“最左下”结点定义为:若树根的左子树为空,则树根为“最左下”结点:否则,从树根的左子树根出发,沿结点的左孩子分支向下查找,直到某个结点不存在左孩子时为止,该结点即为此二叉树的“最左下”结点。例如,下图所示的以A为根的二叉树的“最左下”结点为D,以C为根的子二叉树中的“最左下”结点为C。
   
   二叉树的结点类型定义如下:
   typedef struct BSTNode{
       int  data;
       struct BSTNode *1ch,*rch;  /*结点的左、右孩子指针*/
   }*BSTree;
   函数BSTree Find_Del(BSTree root)的功能是:若root指向一棵二叉树的根结点,则找出该结点的右子树上的“最左下”结点*p,并从树下删除以*p为根的子树,函数返回被册除子树的根结点指针:若该树根的右子树上不存在“最左下”结点,则返回空指针。
   [函数]
   BSTree Find_Del(BSTree root)
   {
       BSTree p,pre;
       if (!root)return NULL;    /*root指向的二叉树为空树*/
         (1) ;    /*令p指向根结点的右子树*/
       if (!p) return NULL;
         (2) ;    /*设置pre的初值*/
       while (p->1ch)  {
           pre=p;p=(3);
       }
       if ((4)==root)    /*root的右子树根为"最左下"结点*/
           pre->rch=NULL;
       else
         (5)=NULL;    /*删除以"最左下"结点为根的子树*/
       return p;
   }

选项

答案(1)p=root->rch;(2)pre=root;(3)p->lch;(4)pre;(5)pre->lch

解析
转载请注明原文地址:https://jikaoti.com/ti/YkW7FFFM
0

最新回复(0)