二叉树如右图所示,若进行顺序存储(即用一维数组元素存储该二叉树中的结点且通过下标反映结点间的关系,例如,对于下标为i的结点,其左孩子的下标为2i、右孩子的下标为2i+1),则该数组的大小至少为( );若釆用三叉链表存储该二叉树(各个结 点包括结点的数据、父结点指针、左孩子指针、右孩子指针),则该链表的所有结点中空指针的数目为( )。
A.6 B.10 C.12 D.15 A.6 B.8 C.12 D.14
第1题:
在完全二叉树的顺序存储中,若结点i有左子女,则其左子女是结点 【 】。
第2题:
在二叉树的顺序存储中,每个结点的存储位置与其父结点、左右子树结点的位置都存在一个简单的映射关系,因此可与三叉链表对应。若某二叉树共有n个结点,采用三叉链表存储时,每个结点的数据域需要d个字节,每个指针域占用4个字节,若采用顺序存储,则最后一个结点的下标为k(起始下标为1),那么(39)时采用顺序存储更节省空间。
A.
B.
C.
D.
第3题:
第4题:
第5题:
第6题:
若某完全二叉树采用顺序存储结构,结点信息存放的次序是A,C,B,E,F,D,则该二叉树的后序遍历序列为()
第7题:
用一维数组存储二叉树时,总是以前序遍历存储结点。
第8题:
在对二叉树进行顺序存储时,若下标为6的结点P既有双亲结点,又有左孩子结点和右孩子结点,则P的双亲结点的下标为(),左孩子结点的下标为(),右孩子结点的下标为()
第9题:
第10题:
第11题:
对
错
第12题:
第13题:
阅读以下说明和C函数,将应填入(n)处的字句写在对应栏内。
【说明】
已知某二叉树的非叶子结点都有两个孩子结点,现将该二叉树存储在结构数组Ht中。结点结构及数组Ht的定义如下:
define MAXLEAFNUM 30
struct node{
char ch; /*当前结点表示的字符,对于非叶子结点,此域不用*/
char *pstr; /*当前结点的编码指针,非叶子结点不用*/
int parent; /*当前结点的父结点,为0时表示无父结点*/
int lchild,rchild;
/*当前结点的左、右孩子结点,为0时表示无对应的孩子结点*/
};
struct node Ht[2*MAXLEAFNUM]; /*数组元素Ht[0]不用*/
该二叉树的n个叶子结点存储在下标为1~n的Ht数组元素中。例如,某二叉树如果其存储结构如下图所示,其中,与叶子结点a对应的数组元素下标为1,a的父结点存储在Ht[5],表示为Ht[1].parent=5。Ht[7].parent=0表示7号结点是树根,Ht[7].child=3、Ht[7].rchild=6分别表示7号结点的左孩子是3号结点、右孩子是6号结点。
如果用0或1分别标识二叉树的左分支和右分支(如上图所示),从根结点开始到叶子结点为止,按所经过分支的次序将相应标识依次排列,可得到一个0、1序列,称之为对应叶子结点的编码。例如,上图中a,b,c,d的编码分别是100,101,0,11。
函数LeafCode(Ht[],n)的功能是:求解存储在Ht中的二叉树中所有叶子结点(n个)的编码,叶子结点存储在Ht[1]~Ht[n]中,求出的编码存储区由对应的数组元素pstr域指示。
函数LeafCode从叶子到根逆向求叶子结点的编码。例如,对上图中叶子结点a求编码的过程如下图所示。
typedef enum Status {ERROR,OK} Status;
【C函数】
Status LeafCode(struct node Ht[], int n)
{
int pc, pf; /*pc用于指出树中的结点,pf则指出pc所对应结点的父结点*/
int i,start;
char tstr[31] = {'\0'}; /*临时存储给定叶子结点的编码,从高下标开始存入*/
for(i = 1;(1); i++){ /*对所有叶子结点求编码,i表示叶结点在HT数组中的下标*/
start = 29;
pc = i; pf = Ht[i].parent;
while (pf !=(2)) { /*没有到达树根时,继续求编码*/
if ((3).lchild == pc ) /*pc所表示的结点是其父结点的左孩子*/
tstr[--start] = '0';
else
tstr[--start] = '1';
pc =(4); pf = Ht[pf].parent; /*pc和pf分别向根方向回退一层*/
}/* end of while */
Ht[i].pstr = (char *) malloc(31-start);
if (!Ht[i].pstr) return ERROR;
strcpy(Ht[i].pstr,(5));
}/* end of for */
return OK;
}/* and of LeafCode */
第14题:
第15题:
第16题:
第17题:
第18题:
若对一棵二叉树从0开始进行结点编号,并按此编号把它顺序存储到一维数组a中,即编号为0的结点存储到a[0]中,其余类推,则a[i]元素的左孩子元素为(),右孩子元素为(),双亲元素(i>0)为()。
第19题:
假定一棵二叉树顺序存储在一维数组a中,但让编号为1的结点存入a[0]元素中,让编号为2的结点存入a[1]元素中,其余类推,则编号为i结点的左孩子结点对应的存储位置为(),若编号为i结点的存储位置用j表示,则其左孩子结点对应的存储位置为()。
第20题:
在线性表的单链接存储中,若一个元素所在结点的地址为p,则其后继结点的地址为(),若假定p为一个数组a中的下标,则其后继结点的下标为()。
第21题:
第22题:
第23题:
对
错