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;
}这是从网上抄的计算二叉树高度的代码,用的是递归方法,对于该类代码我能读懂,
可是如果让我去写,恐怕我写不了这么精妙,感觉就是转不过弯,因此请教大家:你
们是如何理解这种问题的??有什么好方法??
谢谢!!
{
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;
}这是从网上抄的计算二叉树高度的代码,用的是递归方法,对于该类代码我能读懂,
可是如果让我去写,恐怕我写不了这么精妙,感觉就是转不过弯,因此请教大家:你
们是如何理解这种问题的??有什么好方法??
谢谢!!
五星上将
谢谢
你先不去想递归,先按照最蠢的方法把每一步都枚举出来,多枚举几步,你就能找到需要递归的部分。赫赫,这是我一直使用的法子,对于我这种不爱动脑的懒人比较管用:)