我一直不太懂递归,这次在树的学习中我对他有了一点新的认识,我的启发点是从下面这篇微博开始的关于递归输出二叉树,这里转载一下表示感谢!!!
https://blog.youkuaiyun.com/allenchenhh133/article/details/80291252
读完它的博文之后其实我还没有真正的了解因为我还有一点小疑惑,那就是在第一层进入第二层再进入第三层再继续往下走一直到某一层结束这一直处理的都是左子树,他是如何又来处理右子树的呢??????
后来我自己写代码的时候又花了时间才想明白了。
下面是我在写递归输出二叉树时,慢慢的学习了 他和栈之间的关系,继而知道他具体是怎么运行的
然后写的一点东西:
比照这这串代码
我会在main函数中调用DisTree将我已将建立的二叉树的根结点作为实参
void DisTree(Tree *b)
{
if(b!=NULL)
{
printf("b->data"); //当前的根节点
if(b->ld!=NULL||b->rd!=NULL)
{
printf("(");
DisTree(b->ld);//递归,我在这里提一下如果做做字数为空的就相当于没有这行代码!!!会执行下面的内容。
//通过学习我了解到当该行调用函数代码执行完以后
if(b->rd!=NULL)
printf(",");
DisTree(b->rd);
printf(")");
}
}
}