在递归调用左孩子之前,先判断左孩子是否为空。如果左孩子不为空,才执行递归调用。
修改后的代码如下:
void Path(BTNode* bt, char x, char path[], int pathlen)
{
if (bt != NULL)
{
if (bt->data == x)
{
for (int i = 0; i < pathlen; i++)
{
cout << path[i] << " ";
}
cout << bt->data;
return;
}
else
{
path[pathlen] = bt->data;
pathlen++;
if(bt->lchild != NULL)
Path(bt->lchild, x, path, pathlen);
Path(bt->rchild, x, path, pathlen);
}
}
}
这样可以确保即使最后一个左孩子是叶子节点,也能进入函数并继续遍历右子树。
内容由零声教学AI助手提供,问题来源于学员提问