algorithm - 将迭代算法转换为递归

标签 algorithm recursion

我已经编写了一个代码来使用队列(数组)按 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/

相关文章:

algorithm - 在网格中移动的机器人

algorithm - Google CodeJam "Crossing the Road"令人困惑的测试用例

c - 在c中构建一棵二叉树

c - 注册表搜索

c++ - 递归函数返回的字符串是否超出范围?

python - 我想在递归循环展开时添加值

C# - 递归函数问题

python - 尽可能快的类字典匹配

java - 无法打印数组中的最后一个递增序列

algorithm - 字符串分区使得分区按递增顺序排列