问题 问答题

已知深度为h的二叉树采用顺序存储结构已存放于数组BT[1:2h一1]中,请写一非递归算法,产生该二叉树的二叉链表结构。设二叉链表中链结点的构造为(lchild,data,rchild),根结点所在链结点的指针由T给出。

答案

参考答案: 二叉树采用顺序存储结构(一维数组)是按完全二叉树的形状存储的,不按完全二叉树的二叉树顺序存储时,要加“虚结点”。数组中的第一个元素是根结点。本题中采用队列结构。本题中的虚结点用‘#’表示。
typedef struct
BiTree bt; ∥二叉树结点指针
int num; ∥num是结点在一维数组中的编号
}tnode
tnode Q[maxsize]; ∥循环队列,容量足够大
void creat(BiTree T,ElemType BT[])
∥深度h的二叉树存储于一维数组BT[1:2h-1]中,本算法生成该二叉树的二叉链表存储结构
{
tnode tq; ∥tq是队列元素
int len=2h-1; ∥数组长度
T=(BiTree)malloc(sizeof(BiNode)); ∥申请结点
T->data=BT[1]; ∥根结点数据
tq.bt=T;
tq.num=1;
Q [1]=tq; ∥根入队列
front=0:
rear=1; ∥循环队列头、尾指针
while(front!=rear)∥当队列不空时循环
{
front=(front+1)% maxsize;
tq=Q[front];
p=tq.bt;
i=tq.num;∥出队,取出结点及编号
if(BT [2*i]==‘#’‖2*i>len)
p—>lchild=null; ∥左子树为空,‘#’表示虚结点
else∥建立左孩子结点并入队列
{
p—>lchild=(BiTree)malloc(sizeof(BiNode)); ∥申请结点空间
p—>lchild——>data=BT[2*i]; ∥左孩子数据
tq.bt=p—>lchild;tq.num=2*i;rear=(rear+1)%maxsize; ∥计算
队尾位置
Q [rear]=tq;∥左孩子结点及其编号入队
}
if(BT[2*i+1]==‘#’‖2*i+l>len)
p—>rchild=null; ∥右子树为空
else∥建立右孩子结点并入队列
{
p—>rchild—(BiTree)malloc(sizeof(BiNode); ∥申请结点空间
p—>rchild—>data=BT [2*i+1];
tq.bt=p—>rchild;
tq.num=2*i+1;
rear=(rear+1)%maxsize;
Q[rear]=tq; ∥计算队尾位置,右孩子及其编号入队
}
}
}

单项选择题 共用题干题
综合题

农业是整个国民经济生活的基础.阅读下列材料回答问题:(24分)

材料一   春耕夏耘,秋获冬藏,.伐薪榷,治官府,给徭役。春不得避风尘,夏不得避暑热,秋不得避阴雨,冬不得避寒冻。四时之间,亡日休息,又私自送往迎来,吊死问疾,养孤长幼在其中。勤苦如此,尚复被水旱之灾,急政暴赋,赋敛不时,朝令而暮改。当具,有者半贾而卖,亡者取倍称之息。于是有卖田宅、鬻子孙以偿责者。

——西汉·晁错《论贵粟疏》

材料二 茶叶在19世纪30年代每年出口5000万磅,1841年增至7000万磅,1851年达9900万磅,几乎增加了一倍。丝的出口,在鸦片战争前一般每年只有几千包,最多不过10010包,1847年增至22000多包。由于丝、茶的大量出口,一些地区的农民纷纷放弃粮食生产转而种桑植茶。

材料三过春节,贴春联是中国的传统文化习俗,春联的内容往往和历史变迁相联系。下列春联反映了新中国成立以来的农村变化:

春联一:毛 * * 挥手指方向;合作化道路宽又广。

春联二:食堂巧煮千家饭;公社饱暖万人心。

春联三:种责任田仓里储粮翻两番:行大包干银行存款增十倍。

(1)依据材料,归纳威胁小农稳定的主要因素(7分)

(2)材料反映中国农业生产的变化有哪些?(2分)这些变化说明了什么?(3分)

(3)三对春联各反映了怎样的农业政策?结合所学概要说明各政策实施的影响。(12分)