递归函数如何工作?在每种情况下,使用temp-> left和temp->右侧调用遍历veve,或者调用temp-> left的所有调用后跟所有temp->右调用?请对以下代码进行详细说明。
void traverse(bst *temp)
{
if(temp)
{
traverse(bst->left);
printf("%d",temp->info);
traverse(bst->right);
}
}
答案 0 :(得分:1)
当你编辑你的代码时。那么根据那个 -
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
。