logo - 刷刷题
下载APP
【简答题】

试题三(15 分,每空3 分) 阅读以下说明和C 语言函数,将应填入 (n) 处的字句写在答题纸的对应栏内。 [说明] 一棵非空二叉树中“最左下”结点定义为:若树根的左子树为空,则树根为“最左下”结点;否则,从树根的左子树根出发,沿结点的左孩子分支向下查找,直到某个结点不存在左孩子时为止,该结点即为此二叉树的“最左下”结点。例如,下图所示的以A 为根的二叉树的“最左下”结点为D,以C 为根的子二叉树中的“最左下”结点为C。
二叉树的结点类型定义如下: typedef struct BSTNode{ int data; struct BSTNode *lch,*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->lch ){ /* 查找“最左下”结点 */ pre = p; p = (3) ; } if ( (4) == root ) /* root 的右子树根为“最左下”结点*/ pre->rch = NULL; else (5) = NULL; /* 删除以“最左下”结点为根的子树*/ return p; }

举报
参考答案:
参考解析:
.
刷刷题刷刷变学霸
举一反三