
如何写精华回答,获更多曝光?
发布
习题4.33
由一个自动程序来生成二叉树:通过给树的每一个节点指定坐标(x,y),围绕每个坐标画一个圆圈,并将每个节点连到它的父节点上。假设在存储器中存有一棵二叉查找树(或许由此程序生成)并设每个节点都有两个附加的域存放坐标。
a. 坐标x可以通过指定中序遍历数来计算。对于树中的每个节点写出这样一个例程。
b. 坐标y可以通过使用节点深度的相反数算出。对于树中的每一个节点写出这样的例程。
c. 若使用某个虚拟的单位表示,则所画图形的具体尺寸是多少?如何调整单位使得所画的树总是高大约为宽的三分之二?
d. 证明,使用这个系统没有交叉线出现,同时,对于任意节点X,X的左子树的所有元素都出现在X的左边,X的右子树的所有元素都出现在X的右边。
习题4.34
编写一个一般的画树程序,该程序把一棵树转变成下列的图—组装指令:
a. Circle(X,Y)
b. DrawLine(i, j)
第一个指令在(X,Y)处画一个圆,而第二个指令则连接第i个圆和第j个圆(圆以所画的顺序编号)。你或者把它写成一个程序并定义某种输入语言,或者把它写成一个函数,该函数可以被任何程序调用。你的程序的运行时间是多少?
这两道题困扰了我很久,我没有任何思路,求解答。如果有人觉得我是巨婴的话,我无话反驳。使用的是C语言写的。