1.假设一个仅包含二元运算符的算术表达式以链表形式存储在二叉树BT中,写出计算该算术表达式值的算法。【东北大学 2000 三、2 (10分)】
2.给出算法将二叉树表示的表达式二叉树按中缀表达式输出,并加上相应的括号。 【北京邮电大学 2001 五、3 (10分)】 3.(此题统考生做) 用PASCAL语言(或类PASCAL语言)完成下列各题: (1)设表达式a+b*(c-d)-e/f 可以表示成如下二叉树结构: t
- + / a * e f b -
c d
其中t为根结点指针,试运用后序遍历二叉树的规则,写出对表达式求值的算法:EXPVALUE
【北京科技大学 1998年 八、1 (10分)】
4.编程求以孩子—兄弟表示法存储的森林的叶子结点数。要求描述结构。【北京工业大学2000五(10分)】
5.假定用两个一维数组L[N]和R[N]作为有N个结点1,2,?, N的二元树的存储结构。L[i]和R[i]分别指示结点 i的左儿子和右儿子;L[i]=0(R[i]=0)表示i的左(右)儿子为空。试写一个算法,由L和R建立一个一维数组T[n],使T[i]存放结点i的父亲;然后再写一个判别结点U是否为结点V的后代的算法。【哈尔滨工业大学 1999 七 (14分)】 类似本题的另外叙述有:
(1)假定用两个一维数组L[1..n]和R[1..n]作为有n个结点的二叉树的存储结构,L[i]和R[i]分别指示结点i的左孩子和右孩子,0表示空。写一算法,建立一维数组T[1..n],使T中第i(i=1,2,...,n)个分量指示结点i的双亲,然后判别结点u是否为v的子孙的算法。【华南师范大学2000 六(17分)】
6.要求二叉树按二叉链表形式存储,
(1)写一个建立二叉树的算法。(2)写一个判别给定的二叉树是否是完全二叉树的算法。
完全二叉树定义为:深度为K,具有N个结点的二叉树的每个结点都与深度为K的满二叉树中编号从1至N的结点一一对应。此题以此定义为准。【西北大学 2000 六 (12分)】 类似本题的另外叙述有:
(1)试写一算法判断某二叉树是否是完全二叉树。【青岛海洋大学 1999 六(15分)】 (2)编程,判断一棵二叉链表表示的二叉树是否是完全二叉树。【南京航空航天大学2001十(10分)】 (3)编写算法判断一棵二叉树BT是否是完全二叉树。【北方交通大学 1997 八 (20分)】 (4)假设二元树用左右链表示,试编写一算法,判别给定二元树是否为完全二元树?
【哈尔滨工业大学 2000 十一 (14分)】
(5)设二叉树以二叉链表为存储结构,试给出判断一棵二叉树是否为满二叉树的算法,用类pascal语言写为函数形式。【南开大学 1997 四 (16分)】
(6)试写一算法判别某二叉树是否是完全二叉树。【北京邮电大学 1994 九 (20分)】
7.有n个结点的完全二叉树存放在一维数组A[1..n]中,试据此建立一棵用二叉链表表示的二叉树 ,根由tree指向。 【南京理工大学 1998 七、1 (6分)】
8.设任意非空二叉树中结点按层次顺序依次编号为1,2,?,n(n>0),其存储结构采用下图所示形式,其中i表示结点的编号, L(i)的值是i的左儿子的编号,R(i)的值是i的右儿子的编号。若L(i),R(i)的值为0,表示结点i无左儿子或右儿子。试设计算法:
(1)求出二叉树的高度。 (2)求出每个结点的层号(根结点层号为1),并填入D(i)中。(可采用任何高级语言,但要注明你所采用的语言名称)。【山东大学 1992 三、 (13分)】
h
9.已知深度为h的二叉树采用顺序存储结构已存放于数组BT[1:2-1]中,请写一非递归算法,产生该二叉树的二叉链表结构。设二叉链表中链结点的构造为(lchild,data,rchild),根结点所在链结点的指针由T给出。【北京航空航天大学 1999