/*******************
算法练习 6.33
********************/
/***********************************************************
算法描述:假定用两个一维数组L[n+1]和R[n+1]作为有n个结点
的二叉树的存储结构,L[i]和R[i]分别指示结点i(i=1,2,...,n)
的左孩子和右孩子,0表示空.试写一个算法判别结点u是否为结点v的子孙
************************************************************/
/*********递归算法**************/
bool is_child(bitnode u, bitnode v)
{
if(u == v)
return 1;
else
{
if(L[v])
if(is_child(u,L[v]))
return 1;
if(R[v])
if(is_child(u,R[v]))
return 1;
}
return 0;
}
/*******非递归算法***************/
bool is_child(bitnode u, bitnode v)
{
bitnode s[100],p;
int top = 0;
s[top&