最近用kindle翻了一下_编程之美_,上面有很多不错的题目。比如写一个程序,让系统任务管理器的CPU使用曲线为50%,进阶是如何让
曲线为正弦曲线[1]。还有,如何实现双线程高效下载[2]。都是比较有意思、实用的例子。
最大距离
现在有一个题:求二叉树中节点的最大距离。这种题目一看感觉就是必须用到递归。_算法导论_上说递归算法可能将问题划分为规模不同的子问题。而寻找最小子问题就是关键。
解法如下:
这里的最小子问题是root==NULL
或者可以看做root->LNode==NULL
和root->RNode==NULL
。所有的节点都是递归到了这一步得到MaxLen的初始化值。
MaxLen用来实时更新最大距离。
Reference
[1].http://www.cnblogs.com/slysky/archive/2011/11/14/2248102.html
[2].http://blog.chinaunix.net/uid-17102734-id-2830233.html
[3].http://www.cnblogs.com/miloyip/archive/2010/02/25/1673114.html
[4].http://book.douban.com/review/3010762/