【正确答案】正确答案:另一种双亲表示法存储结构,结点结构是(dam,parent)。对每个结点,直接给出其双亲(的下标),用正或负表示该结点是双亲的右子女或左子女,0表示该结点是根,无双亲。该类结构不适于直接进行前序遍历(即若直接前序遍历,算法要很复杂),较好的办法是将这类结构转为结点及其左右子女的顺序存储结构。转换的核心语句段如下: for(i=1;i<=max; i++)(bt[i].1c=bt[i].rc=0;) //先将结点的左右子女初始化为0 for(i=1;i<=max; i++) //填入结点数据和结点左右子女的信息 {bt[i].data=t[i].data; //t[]是原结构,bt[]是转换后的结构 if(t[i].parent0) bt[t[i].parent].rc=i; //右子女 else root=i; //root记住根结点的下标 } 前序递归和非递归遍历上面已有,不再赘述。这类问题的求解方法值得注意。当给定数据存储结构不合适时,可由已给结构来构造好的数据结构,以便于运算。像上面第6题也是这样,先根据L和R数组,构造一个结点的双亲的数组T。
【答案解析】