问题 填空题

[说明] 假设二叉树采用连接存储结构进行存储,root 指向根接点,p 所指结点为任一给定的结点,编写一个求从根结点到p所指结点之间路径的函数。
void path (root, p)
btree * root, * p;

Btree *stack[m0], *s;
int tag[m0], top =0, i, find =0;
s =root;
do

while (s ! = NULL)

stack [top] = s;
tag[top] =0;
( (1) )

if (top >0)

( (2) )
if (tag[top] = =1)

if( (3) )

for (i=1; i< =top; i+ + printf ("%d" ,stack[i]- >data);
find=1;

else top - -;

if( (4) )

p=p- >right;
( (5) )


while (find || (s! = NULL && top ! =0));

答案

参考答案:s=s->left;
(2)s=stack [top];
(3)(s==p)
(4)(top>0 && ! find)
(5)tag [top]=1

解析:试题三
[解答要点] 本题采用非递归后序遍历数root,当后序遍历访问到p所指结点时,此时stack中所有的结点均为P所指结点的祖先,由这些祖先便构成了一条从根结点到p所指结点之间的路径。

单项选择题 A1/A2型题
问答题 简答题