首页 > C > 递归 阅读:57,774

递归遍历树

树的基础理论请参考数据结构第五章。因为树本身就是使用了递归定义,因此在解决树的很多问题的时候都可以使用递归方法。

树的中序遍历的定义是:先遍历左子树,然后遍历根节点,最后遍历右子树。因此中序遍历一颗树的方法:

typedef struct _btree

{

       int value;

       struct _btree *left;

       struct _btree *right;

}btree,*pbtree;

 

void inorder(btree *t)

{

   if(t==NULL)

       return;

   inorder(t->left);//先递归遍历左子树

   printf(“%d\n”,t->value);//遍历根节点

   inorder(t->right) ;//递归遍历右子树

}

如下图所示,中序遍历图中所示的二叉树时,递归函数调用的关系:当递归调用到叶子结点时,由于叶子结点无左右子树,所以遍历了叶子结点后,下层函数返回后,回到上层的递归函数,把上层的根结点遍历后(中序),再遍历上层根节点的右子树。

因此,在递归中,递归函数是不断嵌套调用自己,当遇到递归出口的时候,再返回到上层函数,一层层返回。

周哥教IT,分享编程知识,提高编程技能,程序员的充电站。跟着周哥一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

当你决定关注「周哥教IT」,你已然超越了90%的程序员!

IT黄埔-周哥教IT技术交流QQ群:213774841,期待您的加入!

二维码
微信扫描二维码关注