阅读以下说明和流程图,从供选择的答案中选出应填入流程图(n)处的字句写在对应栏内。 [说明] 以下是某图像二元树存储与还原算法的主要思想描述。 设一幅2n×2n的二值图像,以:“1”表示黑像素点,以“0”表示白像素点。图像二元树结构表示依赖于图像的二元分割,即交替在X轴方向和Y轴方向上分割。先进行水平分割,分成两个2n-1×2n图像子块,然后进行垂直分割,分成4个2n-1×2n-1的正方形块,如此分割,直到子块只含同一像素点为止。如图8-8为一“E”字的二值图像,对其进行二元分割,相应的二元树如图8-9所示。根据图像二元树的0叶结点和1叶结点的数目,删除多者,保留少者。如“E”字图像的二元树0叶结点较多,裁剪后如图8-10所示。 裁剪后图像二元树有4类结点,分别用二进制编码如下: ◆ 左右儿子的结点,编码为11; ◆ 仅有左儿子的结点,编码为10; ◆ 仅有右儿子的结点,编码为01; ◆ 叶结点,编码为00。 存储时,先存储剩余叶结点的类型编码,二进制码00表示0叶结点,11表示1叶结点。再按层次顺序,自左至右存储裁剪后图像二元树各结点的编码。 图像二元树的存储算法用C语言描述所定义的数据结构及函数如下: struct Node{ /*图像二元树结点*/ street Node*Left; street Node*Righ t; char Pixel; } struct Node Queue[MaxLen]; /*队列*/ InitQueue() /*初始化队列Queue的函数; */ EmptyQueue () /*判断队列Queue是否为空的数,若空返回1,否则返回0; */ AddQueue(Item) /*将Item加到队列Queue的数; */ GetQueue() /*取队列Queue第一个元素的函数; */ PutCode(Code) /*写2位二进制码Code到文件的函数*/ 还原算法是存储算法的逆过程,将文件中的二进制码序列转换成图像二元树。还原算法的数据结构与函数与存储算法的相同,还原算法新增了一个函数GetCode ()。 GetCode() /*从文件中读2位二进制码的函数*/ [C程序] 存储算法 void Backup (char CutPixel,st ruct Node ImageTree)'/*Cu tP ixel=0表示裁剪0叶结点*/ { InitQueue(); AddQueue ( ImageTree ) ; PutCode ( 1-CutPixel ) ; While ( !EmptyQueue ( ) ) { TreeNode= GetQueue ( ) ; if (TreeNode→Left==NULL) { PutCode (0) ; continue: } Tl= TreeNode→Left; Tr= TreeNode→R igh t; if ( Tl→Left= = NULL && Tl→Pixel= = CutPixel ) L=0; else { (1); AddQueue ( Tl ) ; } if ( Tr→Left= = NULL && Tr→Pixel= = CutPixel ) R=0; else { (2) AddQueue (T) ; } (3) } } 还原算法 void Restore ( struct Node *TreeRoot ) { TreeRoot= ( strut Node*)malloc ( sizeof (struct Node) InitQueue ( ); AddQueue ( TreeRoot ) ; CutPixel= 1- GetCode ( ) ; while ( ! EmptyQueue ( ) ) { TrecNode= GetQueue ( Queue ) ; NodeCode= GetCode ( ) ; switch ( NodeCode ) { case 0: TreeNode→Left = NULL ; TreeNode→Right= NULL &