下面是修改后的代码:
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;
Path(bt->lchild, x, path, pathlen + 1);
Path(bt->rchild, x, path, pathlen + 1);
}
}
}
主要修改的地方如下:
- 在递归调用时,
pathlen
的值需要在传入子节点前进行增加。 - 不再需要显示地对
pathlen
进行递减操作。
这样,当找到目标节点时,会输出从根节点到目标节点的路径。
内容由零声教学AI助手提供,问题来源于学员提问