阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。【说明】以下程序实现了二叉树的结点删除算法,若树中存在要删除的结点,则删除它,否则返回。 FindNode ()函数能够在二叉树中找到给定值的结点,并返回其地址和父结点。【C++程序】template < class T >void BinSTree < T >: :Delete( const T item){TreeNode < T > * DelNodePtr, * ParNodePtr, * RepNodePtr;if(( DelNodePtr = FindNode (item,ParNodePtr)) = = NULL)(1)if(DelNodePtr→right = = NULL) //被删除结点只有一个子结点的情况RepNodePtr = DelNodePtr→left;else if( DelNodePtr→left = = NULL)(2);else // 被删除结点有两个子结点的情况{TreeNode < T >* PofRNodePtr = DelNodePtr;RepNodePtr = DelNodePtr→left;while(RepNodePtr→right ! = NULL){ //定位左子树的最右结点PofRNodePtr =RepNodePtr;RepNodePtr = RepNodePtr→right;}if(PofRNodePtr = = DelNodePtr) //左子树没有右子结点(3);else //用左子顷的最右结点替换删除的结点{(4)RepNodePtr→left = DelNodePtr→left;RepNodePtr→right = DelNodePtr→right;}}if (5)//要删除结点是要结点的情况root = RepNodePtr;else if ( DelNodePtr→data < ParNodePtr→Data)ParNodePtr→left = RepNodePtr;elseParNodePtr→right =RepNodePtr;FirstTreeNode ( DelNodePtr ) ;//释放内存资源size→;}

阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。

【说明】以下程序实现了二叉树的结点删除算法,若树中存在要删除的结点,则删除它,否则返回。 FindNode ()函数能够在二叉树中找到给定值的结点,并返回其地址和父结点。

【C++程序】

template < class T >

void BinSTree < T >: :Delete( const T& item)

{

TreeNode < T > * DelNodePtr, * ParNodePtr, * RepNodePtr;

if(( DelNodePtr = FindNode (item,ParNodePtr)) = = NULL)

(1)

if(DelNodePtr→right = = NULL) //被删除结点只有一个子结点的情况

RepNodePtr = DelNodePtr→left;

else if( DelNodePtr→left = = NULL)

(2);

else // 被删除结点有两个子结点的情况

{

TreeNode < T >* PofRNodePtr = DelNodePtr;

RepNodePtr = DelNodePtr→left;

while(RepNodePtr→right ! = NULL)

{ //定位左子树的最右结点

PofRNodePtr =RepNodePtr;

RepNodePtr = RepNodePtr→right;

}

if(PofRNodePtr = = DelNodePtr) //左子树没有右子结点

(3);

else //用左子顷的最右结点替换删除的结点

{

(4)

RepNodePtr→left = DelNodePtr→left;

RepNodePtr→right = DelNodePtr→right;

}

}

if (5)//要删除结点是要结点的情况

root = RepNodePtr;

else if ( DelNodePtr→data < ParNodePtr→Data)

ParNodePtr→left = RepNodePtr;

else

ParNodePtr→right =RepNodePtr;

FirstTreeNode ( DelNodePtr ) ;//释放内存资源

size→;

}


相关考题:

阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。【C++程序】include include 阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。【C++程序】include < stdio. h >include < string. h >define Max 1000class Bank{int index;char date [Max] [10]; // 记录交易日iht amount[Max]; // 记录每次交易金额,以符号区分存钱和取钱int rest[ Max]; // 记录每次交易后余额static iht sum; // 账户累计余额public:Bank( ) {index =0;}void deposit( char d[ ] , int m) //存入交易{strcpy ( date [ index ], d);amount[ index] = m;(1);rest[ index] = sum;index++;}void withdraw (char d[ ], int m) //取出交易{strcpy( date[ index] ,d);(2);(3);rest[ index] = sum;index++;}void display( );};int Bank:: sum = 0;void Bank:: display ( ) //输出流水{int i;printf("日期 存入 取出 余额\n");for (4){printf(" %8s" ,date[i] );if (5)printf(" %6d" , -amount[i] );elseprintf( "%6d ",amount[i] );printf( "% 6d\n" ,rest[i] );} }void main( ){Bank object;object. deposit ( "2006.2.5", 1 00 );object. deposit( "2006.3.2" , 200);object. withdraw( "2006.4.1", 50);object. withdraw( "2006.4.5", 80);object. display ( );}本程序的执行结果如下:日期 存入 取出 余额 2006.2.5 100 1002006.3.2 200 3002006.4.1 50 2502006.4.5 80 170

阅读以下说明和流程图,将应填入(n)处的字句写在对应栏内。【说明】已知头指针分别为La和lb的有序单链表,其数据元素都是按值非递减排列。现要归并La和Lb得到单链表Lc,使得Lc中的元素按值非递减排列。程序流程图如下所示:

阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。【说明】以下程序为求行列式X(5,5)的值S。【Visual Basic代码】Private Function col ( byval x ( 5,5 ) as integer ) as longdim fesult as longdim temp as longdim I as integerdim j as integerdim k as imegerresult = 0for I = to 5(1)for j = 1 to 5if I+j>6 thenk= ( 1+j ) mod 5elsek=1endiftemp=temp*x ( k,j )(2)result=(3)(4)(5)End function

阅读以下说明和c++码,将应填入(n)处的字名写在的对应栏内。[说明] 以下函数完成求表达式的值,请填空使之完成此功能。float sum ( float x ){ float s=0.0;int sign = 1;(1);for(inti=1;(2); i+ +){t=t*x;s=s+(3);sign = - sign;(4);}

阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。[说明]下面程序实现十进制向其它进制的转换。[C++程序]include"ioStream.h"include"math.h"includetypedef struct node {int data;node*next;}Node;Class Transform.{DUDlic:void Trans(int d,int i); //d为数字;i为进制void print();private:Node*top;};void Transform.:Trans(int d,int i){int m,n=0;Node*P;while(d>0){(1);d=d/i;p=new Node;if(!n){p->data=m;(2);(3);n++;}else{p->data=m;(4);(5);}}}void Transform.:print(){Node*P;while(top!=NULL){p=top;if(p->data>9)cout<<data+55;elsecout<<data;top=p->next;delete p;}}

阅读下列程序说明和C++程序,把应填入其中(n)处的字句,写在对应栏内。【说明】阅读下面几段C++程序回答相应问题。比较下面两段程序的优缺点。①for (i=0; i<N; i++ ){if (condition)//DoSomething…else//DoOtherthing…}②if (condition) {for (i =0; i<N; i++ )//DoSomething}else {for (i=0; i <N; i++ )//DoOtherthing…}

试题三(共 15 分)阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。

阅读下列说明和C++-代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。【C++代码】 #include using namespace std; class invoice{ public: (1){ cout

阅读下列说明和?C++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】阅读下列说明和?Java代码,将应填入?(n)?处的字句写在答题纸的对应栏内。【说明】某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种类可能不同,但其制作过程相同。前台服务员?(Waiter)?调度厨师制作套餐。现采用生成器?(Builder)?模式实现制作过程,得到如图?6-1?所示的类图。