按顺序遍历二叉搜索树

时间:2015-08-21 13:28:59

标签: c tree

递归函数如何工作?在每种情况下,使用temp-> left和temp->右侧调用遍历veve,或者调用temp-> left的所有调用后跟所有temp->右调用?请对以下代码进行详细说明。

   void traverse(bst *temp)
  {   
       if(temp)
      {
          traverse(bst->left);
          printf("%d",temp->info);
          traverse(bst->right);
      }
  }

1 个答案:

答案 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