会员
周边
众包
新闻
博问
闪存
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
richardcpp
Powered by
博客园
博客园
|
首页
|
新随笔
|
联系
|
订阅
|
管理
2012年10月11日
递归
摘要: 对于递归问题的分析:1. 先弄清楚递归的顺序。在递归的实现中,往往需要假设后续的调用已经完成,在此基础之上,才实现递归的逻辑。在该题中,我们就是假设已经把后面的长度计算出来了,然后继续考虑后面的逻辑;2. 分析清楚递归体的逻辑,然后写出来。比如在上面的问题中,递归体的逻辑就是如何计算两边最长的距离;3. 考虑清楚递归退出的边界条件。也就说,哪些地方应该写return。注意到以上 3 点,在面对递归问题的时候,我们将总是有章可循。
阅读全文
posted @ 2012-10-11 09:53 richardcpp
阅读(391)
评论(0)
推荐(0)
编辑
二叉树的最大距离
摘要: 问题定义如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。对于任意一个节点,以该节点为根,假设这个根有k个孩子节点,那么距离最远的两个节点U与V之间的路径与这个根节点的关系有两种。1).若路径经过Root,则U和V属于不同子树的,且它们都是该子树中到根节点最远的节点,否则跟它们的距离最远相矛盾2).如果路径不经过Root,那么它们一定属于根的k个子树之一,并且它们也是该子树中相距最远的两个顶点因此,问题就可以转化为在字数上的解,从而能够利用动态规划来解决。设第K棵子树中
阅读全文
posted @ 2012-10-11 09:06 richardcpp
阅读(774)
评论(0)
推荐(0)
编辑