int Height(BinTree T)
  {
   int hl,hr; 
   if(T)
    {//非空树 
     if(t->lchild==NUll)&&(t->rchild==NULL)//只含一个根结点
      return 1;
     else 
      {
       hl=height(t->lchild);//根的左子树高度
       hr=height(t->rchild);//根的右子树高度
       if (hl>=hr)
        return hl+1;
       else 
return h2+1;
      }
    }
   else return 0;
  }这是从网上抄的计算二叉树高度的代码,用的是递归方法,对于该类代码我能读懂,
可是如果让我去写,恐怕我写不了这么精妙,感觉就是转不过弯,因此请教大家:你
们是如何理解这种问题的??有什么好方法??
谢谢!!

解决方案 »

  1.   

    算不上精秒,可以去网上搜一些递归的例子,例如C++中的对#include的解析。JAVA中的正则表达式,都是不错的递归应用。
      

  2.   

    three star + one star + one star = five star
    五星上将
    谢谢
      

  3.   

    一个very simple的方法。
    你先不去想递归,先按照最蠢的方法把每一步都枚举出来,多枚举几步,你就能找到需要递归的部分。赫赫,这是我一直使用的法子,对于我这种不爱动脑的懒人比较管用:)