求问一个问题:
首先,二叉树的定义:代码如下:
typedef struct BiNode
{
int data;
struct BiNode *left,*right;
}BiNode,*BiTree;
读入代码如下:
int InsertData(BiTree *t,int data)
{
if(*t==NULL)
{
*t=(BiTree)malloc(sizeof(BiNode));
(*t)->data=data;
(*t)->left=NULL;
(*t)->right=NULL;
return OK;
}
else
{
if((*t)->data < data)
{
InsertData(&((*t)->right), data);
return OK;
}
else
{
InsertData(&((*t)->left), data);
return OK;
}
}
}
在树中查找某个值,返回地址的函数如下:
BiNode *FindData(BiNode *t,int data)
{
if(t)
{
if(t->data==data)
return t;
else if(t->data > data)
{
t=FindData(t->left,data);
return t;
}
else
{
FindData(t->right,data);
}
}
else
return NULL;
}
为什么在查询右子树的代码中,直接写FindData(t->right,data),最终也能查找到该值的地址,可是直接这么写,是没有返回值的呀,为什么可以跑出来?