试题四阅渎以下说叫和C函数,回答问题。
[说明]
已知某二叉树的非叶子节点都有两个孩子节点,现将该二叉树存储在结构数组Ht中。节点结构及数组Ht的定义如下:
#define MAXLEAFNUM 30 Struct node{
char ch; char *pstr; int parent;
int lchild, rchiid; }; Struct
node Ht[2 *MAXLEAFNUM];
该二叉树的n个叶子节点存储在下标为1~n的Ht数组元素中。例如,某二叉树如图8-26所示,其存储结构如图8-27所示,其中,与叶子节点a对应的数组元素下标为1,a的父节点存储在Ht[5],表示为Ht[1].parent=5。Ht[7].parent=0表示7号节点是树根,Ht[7].lchild=3、Ht[7].rchild=6分别表示7号节点的左孩子是3号节点、右孩子是6号节点。
如果用“0”或“1”分别标识二叉树的左分支和右分支如图8-26所示,从根节点开始到叶子节点为止,按所经过分支的次序将相应标识依次排列,可得到一个0、1序列,称之为对应叶子节点的编码。例如,图8-26中a、b、c、d的编码分别是100、101、0、11。
函数LeafCode(Ht[],n)的功能是:求解存储在Ht中的二叉树中所有叶子节点(n个)的编码,叶子节点存储在Ht[1]~Ht[n]中,求出的编码存储区由对应的数组元素pstr域指示。
函数LeafCode从叶子到根逆向求叶子节点的编码。例如,对图8-26中叶子节点a求编码的过程如图8-28所示。
[函数]
typedef enum Status {ERROR, OK} Status; Status LeafCode
(Struet node Ht[], int n) { int pc, pf;
int i, start; char
tstr[31]={’/0’); for(i=1; (1) ; i++)
{ start=29; pc=i;
pf=Ht[i].parent; while(Pf!= (2)
) { if( (3)
. lchiid==pc)
tstr[--start]=’0’; else
tstr[-start]=’1’;
pc= (4) ;
pf=Ht[Pf].parent; }
Ht[i].pstr=(char*)malloc(31-start);
if(!Ht[i].pstr)return ERROR; strcpy(Ht[i]. pstr,
(5) ; }
return OK; }
题库:初级程序员
类型:填空题
时间:2021-07-10 11:19:01
免费下载:《填空集》Word试卷
试题四阅渎以下说叫和C函数,回答问题。
[说明]
已知某二叉树的非叶子节点都有两个孩子节点,现将该二叉树存储在结构数组Ht中。节点结构及数组Ht的定义如下:
#define MAXLEAFNUM 30 Struct node{
char ch; char *pstr; int parent;
int lchild, rchiid; }; Struct
node Ht[2 *MAXLEAFNUM];
该二叉树的n个叶子节点存储在下标为1~n的Ht数组元素中。例如,某二叉树如图8-26所示,其存储结构如图8-27所示,其中,与叶子节点a对应的数组元素下标为1,a的父节点存储在Ht[5],表示为Ht[1].parent=5。Ht[7].parent=0表示7号节点是树根,Ht[7].lchild=3、Ht[7].rchild=6分别表示7号节点的左孩子是3号节点、右孩子是6号节点。
如果用“0”或“1”分别标识二叉树的左分支和右分支如图8-26所示,从根节点开始到叶子节点为止,按所经过分支的次序将相应标识依次排列,可得到一个0、1序列,称之为对应叶子节点的编码。例如,图8-26中a、b、c、d的编码分别是100、101、0、11。
函数LeafCode(Ht[],n)的功能是:求解存储在Ht中的二叉树中所有叶子节点(n个)的编码,叶子节点存储在Ht[1]~Ht[n]中,求出的编码存储区由对应的数组元素pstr域指示。
函数LeafCode从叶子到根逆向求叶子节点的编码。例如,对图8-26中叶子节点a求编码的过程如图8-28所示。
[函数]
typedef enum Status {ERROR, OK} Status; Status LeafCode
(Struet node Ht[], int n) { int pc, pf;
int i, start; char
tstr[31]={’/0’); for(i=1; (1) ; i++)
{ start=29; pc=i;
pf=Ht[i].parent; while(Pf!= (2)
) { if( (3)
. lchiid==pc)
tstr[--start]=’0’; else
tstr[-start]=’1’;
pc= (4) ;
pf=Ht[Pf].parent; }
Ht[i].pstr=(char*)malloc(31-start);
if(!Ht[i].pstr)return ERROR; strcpy(Ht[i]. pstr,
(5) ; }
return OK; }
本题关键词:锯叶竹节树,非树形结构,构件节点,构造节点,对节树根,有结构问题,樟树子,树腰子,节点,牛奶树子;