递归函数如何工作?在每种情况下,以temp-> left和temp-> right调用遍历veing还是所有temp-> left调用都跟着temp-> right的所有调用?请为以下代码做详细说明。
void traverse(bst *temp)
{
if(temp)
{
traverse(bst->left);
printf("%d",temp->info);
traverse(bst->right);
}
}
当您编辑代码时,根据此-
void traverse(bst *temp) // function to traverse in a bst (parameter as root )
{
if(temp) // check temp (if not NULL then proceed)
{
traverse(bst->left); // recursive call with root as left child and traverse left sub-tree till it goes to last node.
printf("%d",temp->info); // print value of data at current node
traverse(bst->right); // recursive call with root as right child and traverse right sub-tree till it goes to last node
}
}
traverse(bst->left);
通过此调用,它转到左子树的最后一个节点,当if
条件变为条件时,false
它返回到前一个调用并在该节点上打印值,然后traverse(bst->right);
执行下一个递归调用,并遍历该当前根的右子树,直到temp
变为NULL
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句