我已经编写了一个代码来使用队列(数组)按 Level Order 打印树。
void printLevelOrder(node *root) {
node* queue[10];
node*t=root;
int y=0;
queue[y]=t;
for(int i=0;i<10;i++)
{
printf("%d,",queue[i]->val);
t=queue[i];
if((t->left)!=NULL){
queue[++y]=t->left;
}
if((t->right)!=NULL){
queue[++y]=t->right;
}
}
}
我想将方法转换为递归方法。 我试过了,但没有得到正确的解决方案。是否可以将此类问题转换为使用递归调用?
最佳答案
可以使这个递归,但在这种情况下,结果可能看起来像上面执行的代码中的循环体,然后为队列中的下一个元素调用自身。 不可能将其转换为一种在树遍历算法中更常见的递归,其中递归方法为它作为参数接收的子节点调用自身。因此没有预期的性能提升——你仍然需要队列或类似这样的结构——而且我真的不明白执行转换的意义。
关于algorithm - 将迭代算法转换为递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12794819/